Binäre Ausgabedateien

Streams vorgesehen waren ursprünglich für Text, weshalb der Standard Ausgabemodus Text.Klicken Sie im Textmodus das Zeilenumbruchzeichen (hexadezimal 10) erweitert zu einem die zurückgegeben wird (nur 16-Bit-).Die Erweiterung kann Probleme verursachen, wie hier gezeigt:

// 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 können dieses Programm erwarteten, um die Bytesequenz {99, 0, 10, 0} auszugeben. Stattdessen gibt sie {99, 0, 13, 10, 0} aus, für die Probleme verursacht ein Programm, das binäre Eingabe erwartet.Wenn Sie tatsächliche binäre Ausgabe benötigen, in der Zeichen unübersetzt geschrieben werden, könnten Sie die Binärdatei angegeben werden, die mithilfe des Modus arguments ofstream-Konstruktor ausgegeben:

// 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

Referenz

Ausgabestreams