problem fstream iso:binary



  • hi,

    ich hab ein datei "test.txt", in der die ziffern von 0 bis 9 stehen.

    dann:

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main() {
        fstream hDatei("test.txt"/*, ios::binary*/);//hier ist mein problem !!
        hDatei.seekg(5);
        char c = hDatei.get();
        cout << '\'' << c << "\' ASCII(" << (unsigned int)(c) << ')' << endl;
        hDatei.close();
        return 0;
    }
    

    wenn ich die datei normal öffne erhalte ich die ausgabe:

    '5' ASCII(53)
    

    wenn ich aber die datei _mit_ ios::binary öffne erhalte ich:

    ' ' ASCII(4294967295)
    

    was mach ich falsch bzw. was muss ich bei ios::binary beachten ?

    danke.
    lw

    edit: wenn man statt (unsigned int) bei binär nur auf (int) castet, bekommt man -1.

    [ Dieser Beitrag wurde am 22.04.2003 um 13:34 Uhr von Lawilog editiert. ]



  • muss man bei ios::binary nicht read und write verwenden? (statt get und put)



  • Original erstellt von Korbinian:
    muss man bei ios::binary nicht read und write verwenden? (statt get und put)

    afaik sollte das keine rolle spielen weil der einzige unterschie (unter windows) der ist das newlines anders behandelt werden...

    hats vielleicht vor dem fünften zeichen in der datei irgendwo ein newline?



  • nö; der inhalt der datei ist einfach nur:

    0123456789
    


  • kann das jemand mal bei sich compilieren ? vielleicht liegts ja an meinem compiler.

    wäre nett.

    lw



  • Ich habe das hier durch meinen GCC gejagt und erhalte genau das gleiche Ergebnis.

    Eine Erklärung habe ich allerdings nicht.

    Stell' die Frage doch noch einmal in news://de.comp.lang.iso-c++



  • du willst aus der datei lesen, oder?
    dann verwende mal ifstream oder fstream("xxx", ios::in);

    bei meinem gcc und borland hilft das! ich weiß leider nicht, ob das standardverhalten ist.


Anmelden zum Antworten