Archivos de salida binarios

Las secuencias se diseñaron originalmente para el texto, por lo que el modo de salida predeterminado es texto.En modo de texto, el carácter de nueva línea (hexadecimal 10) expanda un retorno-avance de línea de carro (de 16 bits solo).la extensión puede producir problemas, como se muestra aquí:

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

Se espera que este programa genere la secuencia de bytes {99, 0, 10, 0}; en su lugar, genera {99, 0, 13, 10, 0}, que produce problemas para un programa que cuenta con entrada binaria.Si necesita el binario verdadero generar, en el que los caracteres se escriben sin traducir, puede especificar el binario generado utilizando el argumento de modo de constructor de 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 ); 
}

Vea también

Referencia

Secuencias de salida