"writeFileBytes"以下の関数を使用してstd::vector<unsigned char>
の内容をファイルに書き出します。私は "unsigned char"という型を使ってファイルを保存したいのです( "char"のキャストになります)。その理由は、 "unsigned char"は任意のバイト(例えば "00000000"ビット)との互換性があるからです。私たちが "char"を使用するとき、特定の "無効な"文字の操作にいくつかの問題があります。C++ - "std :: vector <unsigned char>"の内容をファイルに保存する
「00000000」ビット(1バイト)の問題の詳細については、What is the most suitable type of vector to keep the bytes of a file?を参照してください。
void writeFileBytes(const char* filename, std::vector<unsigned char>& fileBytes){
std::ofstream file(filename, std::ios::out|std::ios::binary);
file.write(fileBytes.size() ? (char*)&fileBytes[0] : 0,
std::streamsize(fileBytes.size()));
}
writeFileBytes("xz.bin", fileBytesOutput);
ネイティブファイルに書き込むタイプ「unsigned char型」を使用する方法はありますか?
この懸念は本当に意味がありますか?
UPDATE I:
ネイティブファイルに書き込むタイプ "unsigned char型" を使用する方法はありますか? - >はい!
krzaqのガイドラインに従ってください!
void writeFileBytes(const char* filename, std::vector<unsigned char>& fileBytes){
std::ofstream file(filename, std::ios::out|std::ios::binary);
std::copy(fileBytes.cbegin(), fileBytes.cend(),
std::ostream_iterator<unsigned char>(file));
}
UPDATE II:
この懸念は本当に理にかなって? - >いくつかの点で、はい!
私は以下のコメントとして...
」... 『unsigned char型は、』我々はこれらの8ビットを変換しようとする。( 『00000000』のビットを含む) 『互換性のより高いレベル』を持っているようです'00000000'ビットを 'char'に変更すると 'unsigned char'と違う値はありません。 'unsigned char'では無効な/ char型の 'char'値がありますが... "
詳細についてはWhat is the most suitable type of vector to keep the bytes of a file?をご覧ください。
それは、説明や理由が付いているネガが来ると、それはコミュニティのためにとても良いし、(私のような)それを豊かにする。こうして私たちは一緒に物事を改善することができます!何か問題がある場合は、このスレッドを修正または削除できます。私たちは合理的な人だと確信しています。 –
"00000000"ビット(1バイト)は、 "char"タイプでは認識できません。これらの8ビットを "char"に変換しようとすると、 "unsigned char"と違って値はありません。 "unsigned char"では、無効な/認識されない "char"値がありますが、それがあります。私はこの議論をhttp://stackoverflow.com/questions/40052857/c-save-the-contents-of-a-stdvectorunsigned-char-to-a-file/40052889#40052889で見てみることをお勧めします。ありがとう! –