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