Binäre Ausgabedateien
Streams wurden ursprünglich für Text entwickelt, deswegen ist die Standardmethode für die Ausgabe „text“. Im Textmodus wird das Zeilenvorschubzeichen (Newline) auf ein Wagenrücklaufzeilen-Einzugspaar erweitert. Die Erweiterung kann Probleme verursachen, wie hier gezeigt wird:
// 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 erwarten möglicherweise, dass dieses Programm die Bytesequenz { 99, 0, 10, 0 } ausgibt; stattdessen wird { 99, 0, 13, 10, 0 } ausgegeben, wodurch Probleme für ein Programm verursacht werden, das eine binäre Eingabe erwartet. Wenn Sie eine echte binäre Ausgabe benötigen, in der Zeichen nicht translatiert geschrieben werden, können Sie die binäre Ausgabe mithilfe des Arguments ofstream-Konstruktor angeben:If you need true binary output, in which characters are written untranslated, you could specify binary output by using the ofstream constructor openmode
argument:
// 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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für