Arquivos binários de saída
Fluxos foram originalmente concebidos para texto, portanto, o modo de saída padrão é o texto.No modo de texto, o caractere de nova linha (10 hexadecimal) se expande para e alimentação de um carro linha (somente a versão de 16 bits).A expansão pode causar problemas, conforme mostrado aqui:
// 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 ) );
}
Você poderia esperar este programa {99, 0, 10, 0}; a seqüência de bytes de saída. em vez disso, ele produz {99, 0, 13, 10, 0}, que causa problemas de um programa esperando uma entrada de binária.Se você precisar verdadeiro saída binária, em que os caracteres são escritos untranslated, você poderia especificar saída binária, usando o ofstream o argumento do construtor modo:
// 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 );
}