バイナリ出力ファイル
ストリームはテキストの最初に設計されています。つまり既定の出力モードはテキストです。テキスト モードでは改行文字 (16 進数 10) は 16 ビット復帰と改行に配置します (のみ)。配置は次に示すように問題が発生することがあります :
// binary_output_files.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;
int iarray[2] = { 99, 10 };
int main( )
{
ofstream os( "test.dat" );
os.write( (char *) iarray, sizeof( iarray ) );
}
バイト シーケンス {990100} 出力するとこのプログラムが予想される場合があります。; 代わりにバイナリの入力を要求するプログラムの問題が発生する場合は{99013100} 出力します。文字が前の翻訳に作成された実際のバイナリ出力が必要な場合はofstream モードのコンストラクターの引数を使用してバイナリ出力を指定することがあります :
// binary_output_files2.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;
int iarray[2] = { 99, 10 };
int main()
{
ofstream ofs ( "test.dat", ios_base::binary );
// Exactly 8 bytes written
ofs.write( (char*)&iarray[0], sizeof(int)*2 );
}