質問
fstreamを使用してバイナリファイルに書き込み、バイナリフラグを使用してファイルを開くときに
テキストをバイナリとして書く必要がありましたが、単純な書き込みでうまくいきました。 問題は、16進数で示すように0も書き込む必要があることです。バイナリメモ帳で開いたときの値はゼロと表示されますが、これを書き込もうとすると0以外の値は16進数で30の値でした。
このような特定のデータの書き方
解決
fstreamを開くとき、 ios :: binary
フラグを使用してバイナリ出力を指定します。詳細については、こちらをご覧ください。
0の書き込みに関しては、16進数で30が表示されている場合、2進数の0ではなく、文字 '0'を書き込んでいます。それをfstreamで行うには、次のようにします。 p>
my_fstream << 0;
バイナリデータ0にはテキスト表現がないため、文字 '0'を読むことができるようにメモ帳で読むことはできません。
他のヒント
おそらく次のようなものが必要なだけで、必要に応じて改善してください。
ofstream file("output.bin", ios::out | ios::binary);
if (file.good())
{
char buf[1] = {0};
file.write(buf, sizeof(buf));
file.close();
}
より洗練されたソリューションとドキュメントへのリンクはすでに投稿されています。
所属していません StackOverflow