Teilen über


Binäre Ausgabedateien

Streams wurden ursprünglich für Text entwickelt, deswegen ist die Standardmethode für die Ausgabe „text“. Im Textmodus wird das Zeilenvorschubzeichen (Newline) auf ein Wagenrücklaufzeilen-Einzugspaar erweitert. Die Erweiterung kann Probleme verursachen, wie hier gezeigt wird:

// 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 ) );
}

Sie erwarten möglicherweise, dass dieses Programm die Bytesequenz { 99, 0, 10, 0 } ausgibt; stattdessen wird { 99, 0, 13, 10, 0 } ausgegeben, wodurch Probleme für ein Programm verursacht werden, das eine binäre Eingabe erwartet. Wenn Sie eine echte binäre Ausgabe benötigen, in der Zeichen nicht translatiert geschrieben werden, können Sie die binäre Ausgabe mithilfe des Arguments ofstream-Konstruktor angeben: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>
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 );
}

Siehe auch

Output Streams (Ausgabestreams)