Seltsames Verhalten mit ofstream



  • Hallo!

    Kann mir jemand dieses Verhalten erklären?

    In der Datei steht FF FF FF FF, dann lasse ich dieses Programm laufen:

    ofstream file("E:\\test1.dat", ios::binary || ios::ate);
    
    file.seekp(4);
    
    size_t pos = file.tellp();
    int val = 1; // Seltsames Verhalten mit val = 10 ???
    file.write((char*)&val, 4);
    size_t pos2 = file.tellp();
    cout << "WRITTEN: " << (pos2 - pos) << endl;
    
    file.close();
    

    Ausgabe: WRITTEN: 4
    Datei: FF FF FF FF 01 00 00 00

    Also wie erwartet.

    Nun dasselbe von vorn, nur mit int val = 10 (erwarte FF FF FF FF 0A 00 00 00).
    Aber nein:

    Ausgabe: WRITTEN: 5
    Datei: FF FF FF FF 0D 0A 00 00 00

    Was ist denn da los 😕



  • OM...G... 🙄 🙄 🙄

    Leiwand schrieb:

    ios::binary || ios::ate)



  • BTW: close() am Ende ist überflüssig und ein int muss nicht zwingend 4 Bytes groß sein.


Anmelden zum Antworten