Anfänger, IOS::Binary



  • Hallo,

    Ich habe das Problem, dass mein "Programm" nur ohne ios::binary funktioniert.
    sobald ich ios::binary verwende wird eine 'exception' geschmissen.

    int length;
        char * buffer;
        fstream f;
    
        f.open(argv[1], ios::binary);
    
        if(!f)
            cout << "problem with f" << endl;
        else
        {
            f.seekg(0, ios::end);
    
            length = f.tellg();
    
            f.seekg(0, ios::beg);
    
            buffer = new char[length];
    
            f.read(buffer, length);
    
            f.close();
    
            cout.write(buffer, length);
        }
    

    kann mir jemand erklren woran das liegt?

    edit://
    ich versuche eine .txt zu laden



  • f.open(argv[1],  ios::in | ios::binary);
    


  • Nä, fstream ergänzt von alleine ios_base::in | ios_base::out .



  • Ad aCTa schrieb:

    Nä, fstream ergänzt von alleine ios_base::in | ios_base::out .

    Das stimmt nicht! Er gab ios::binary an und das wurde nicht ergänzt.



  • ich hatte das gefühl, er läd irgendwas aus dem ram oder etc.

    woher kommen die daten dann?



  • Wenn du binary angibts, dann werden Steuerzeichen für Texte ignoriert, dass heist es kann schon sein, dass du merkwürdige Zeichen ausgegeben bekommst. Ansonsten kann man nur vermuten das argv[1] kein gescheiter Pfad ist, welche aber ohne meckern gefressen wird. Probier es mal mit konstantem char* z.B.

    f.open("C:\\Test.txt",  ios_base::out |ios_base::in | ios_base::binary);
    

    Das ios_base::out ist eingentlich überflüssig, schadet aber hier nicht.


Anmelden zum Antworten