Condividi tramite


File di output binari

I flussi erano originariamente progettati per il testo, quindi la modalità di output predefinita è testo. In modalità testo, il carattere di avanzamento riga (nuova riga) si espande a una coppia di avanzamento ritorno a capo. L'espansione può causare problemi, come illustrato di seguito:

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

L'output previsto del programma potrebbe essere la sequenza di byte {99, 0, 10, 0}, invece il programma restituisce {99, 0, 13, 10, 0}, causando problemi se un programma è in attesa di un input binario. Se è necessario un output binario reale, in cui i caratteri vengono scritti non tradotti, è possibile specificare l'output binario usando l'argomento del costruttore openmode 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 );
}

Vedi anche

Output Streams (Flussi di output)