Warum fügt ofstream ein 0x0D Byte vor 0x0A ein?

8

Ich gebe ein Array von Zeichen ohne Vorzeichen in C ++ mit ofstream fout("filename"); aus aber dazwischen entsteht ein falscher Charakter. Dies ist der Teil des Codes, der das Problem verursacht:

%Vor%

und dies ist die Definition des Arrays:

%Vor%

In der Ausgabedatei bekomme ich ein falsches 0x0D zwischen 0x09 und 0x0A . Ich habe das Array im Debugging-Modus überprüft, bevor es gedruckt wird und es wird nicht geändert. Bitte sagen Sie mir, was Sie von diesem Problem halten.

    
raven 02.03.2011, 21:08
quelle

1 Antwort

21

Ihr Stream wird im Textmodus geöffnet, und da 0x0A das Zeilenvorschubzeichen (LF) ist, wird es von Ihrem Stream in 0x0D 0x0A , d. h. CR / LF, konvertiert.

Öffnen Sie Ihren Stream im Binärmodus:

%Vor%

Dann sollten Zeilenende-Conversions nicht durchgeführt werden.

Dies wird normalerweise für eine gute Idee gehalten, da Streams bizarr w.r.t. Spülen im Textmodus.

    
Lightness Races in Orbit 02.03.2011, 21:12
quelle

Tags und Links