Fichiers de sortie binaires
Les flux de données initialement conçus pour le texte, le mode de sortie par défaut est texte.En mode texte, le caractère de saut de ligne (hexadécimal 10) se développe vers un saut de ligne-retour de chariot (16 bits uniquement).L'expansion peut provoquer des problèmes, comme indiqué ci-après :
// 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 ) );
}
Vous pouvez supposer que ce programme pour la séquence d'octets {99, 0, 10, 0} ; au lieu de cela, elle affiche {99, 0, 13, 10, 0}, causant des problèmes pour un programme qui attend l'entrée binaire.Si vous avez besoin de la véritable sortie binaire, dans lequel les caractères sont écrits non traduits, vous pouvez spécifier la sortie binaire à l'aide de l'argument de mode de constructeur d' 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 );
}