Unerwartete Ergebnisse mit std :: ofstream binary write
Ich bin neu in C++ std::stream, und ich mache einige tests. Ich habe diesen einfachen code:
int i = 10;
char c = 'c';
float f = 30.40f;
std::ofstream out("test.txt", std::ios::binary | std::ios::out);
if(out.is_open())
{
out<<i<<c<<f;
out.close();
}
Als der stream wird geöffnet, als std::ios::binary
ich erwarte, dass in der test.txt
- Datei ist die binäre Darstellung von i
c
und f
sondern ich habe 10c30.4
.
Können Sie mir bitte sagen, was ich falsch mache?
InformationsquelleAutor der Frage Felics | 2013-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
std::ios::binary
verspricht keine line-end Konvertierungen auf den stream (und einige andere kleine verhaltensunterschiede mit text-streams).Kann man sich bei
Hier ist ein Beispiel mit Boost Spirit Karma (vorausgesetzt, Big-Endian-byte-Reihenfolge):
Diese Drucke
InformationsquelleAutor der Antwort sehe
Um zu schreiben rohen binären Daten, die Sie haben zu verwenden ostream::write. Es funktioniert nicht mit der output-Operatoren.
Stellen Sie auch sicher, wenn Sie Lesen möchten, aus einer binären Datei nicht zu verwenden operator>> aber statt istream::read.
Die links liefern auch Beispiele, wie Sie behandeln können binäre Daten.
Also für dein Beispiel:
InformationsquelleAutor der Antwort mistapink