二进制输出文件

流为文本最初设计,因此,默认输出方法是文本。 在文本模式下,换行符 (十六进制 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 ) );
}

您可能希望此程序到输出字节序列 {99, 0, 10, 0};相反,它会输出 {99, 0, 13, 10, 0},导致需要二进制输入的程序的问题。 如果需要 true 的二进制输出,使用 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 ); 
}

请参见

参考

输出流