problem mit ostream::write



  • Hallo,

    ich habe folgendes Problem:

    Ich möchte in eine Binärdatei zwei Bytes schreiben. Also erzeuge ich mir nen binären ostream und einen buffer mit 2 chars und schreibe diese mit write in den stream. Ungefähr so:

    char buf[2] = { 0x0, 0x0a};
    os.write(buf, sizeof(char[2]));
    

    Das Ergebnis ist jedoch, dass "0x0 0x0d 0x0a" in die Datei geschrieben wurde. Das geschieht jedoch nicht, wenn ich statt 0x0a z.B. 0x0b oder irgendwas anderes reinschreibe.

    Dass heißt, die Anzahl der geschriebenen Bytes scheint abhängig von Inhalt des buffers zu sein. Ich kann mir das beim besten Willen nicht erklären. Vielleicht hat ja jemand ne Idee was da schief läuft.

    Das Problem tritt auch bei folgendem Code auf:

    unsigned short test = 2573;   // 0x0d 0x0a
    os.write((const char*)&test, sizeof(unsigned short));
    

    Vielen Dank im Voraus,
    pothead_2k



  • Das 0x0a und 0x0d zusaamenhängen liegt an dein Zeichen das ist ein Zeilenumbruch(Return).



  • ja, das würde Sinn machen. Aber wie kann ich dann das Problem umgehen? Schliesslich will ich einen Binärstream in die Datei schreiben?

    Oder ist ein std::ostream dafür gar nicht geeignet ?



  • Manchmal sieht man den Wald vor lauter Bäumen nicht. Ich hatte einfach nur vergessen ios::binary als Flag anzugeben. Damit gehts.


Anmelden zum Antworten