Skip to content

Latest commit

 

History

History
45 lines (37 loc) · 1.48 KB

binary-output-files.md

File metadata and controls

45 lines (37 loc) · 1.48 KB
descriptiontitlems.datehelpviewer_keywordsms.assetid
Learn more about: Binary Output Files
Binary Output Files
11/04/2016
I/O [C++], binary output files
files [C++], binary output files
binary data, binary output files
180954af-8cd6-444b-9a76-2f630a3389d8

Binary Output Files

Streams were originally designed for text, so the default output mode is text. In text mode, the line feed (newline) character expands to a carriage return-line feed pair. The expansion can cause problems, as shown here:

// binary_output_files.cpp// compile with: /EHsc #include<fstream>usingnamespacestd;int iarray[2] = { 99, 10 }; intmain( ) { ofstream os( "test.dat" ); os.write( (char *) iarray, sizeof( iarray ) ); }

You might expect this program to output the byte sequence { 99, 0, 10, 0 }; instead, it outputs { 99, 0, 13, 10, 0 }, which causes problems for a program expecting binary input. If you need true binary output, in which characters are written untranslated, you could specify binary output by using the ofstream constructor openmode argument:

// binary_output_files2.cpp// compile with: /EHsc #include<fstream>usingnamespacestd;int iarray[2] = { 99, 10 }; intmain() { ofstream ofs ( "test.dat", ios_base::binary ); // Exactly 8 bytes written ofs.write( (char*)&iarray[0], sizeof(int)*2 ); }

See also

Output Streams

close