ifstream: Die letzten X Zeichen einer Datei einlesen



  • Hallo,

    ich möchte die letzten paar Zeichen einer Datei mit ifstream einlesen. Mein bisheriger Code:

    ifstream f;
        char* fileBuf;
        fileBuf = new char [101];
    
        f.open(fileName,ios::in );
        if(f) {
            f.seekg(fileSize - 100,ios::beg);
            f.read(fileBuf,100);
            f.close();
            cout << (string)fileBuf << endl;
    		[...]
    

    Die Variable fileSize ist eine const unsigned int und wird als Parameter an die Funktion übergeben. Ich bekomme allerdings nur "©♦=" ausgegeben (ohne Quotes).
    Woran liegt das und wie könnte man das Problem lösen?

    P.S.: Ja, ich weiß, man könnte Zeile 7 durch f.seekg(-100,ios::end); ersetzen 😉

    //edit: Verwendete IDE ist Code::Blocks und Compiler MinGW


  • Administrator

    Was soll das hässliches sein?

    cout << (string)fileBuf << endl;
    

    Du sagt dem Kompiler dass in diesem fileBuf ein std::string Objekt liegt, was aber schlicht und einfach nicht die Wahrheit ist. Dadurch erzeugst du undefiniertes Verhalten. Wieso machst du nicht sowas?

    cout.write(fileBuf, 100);
    cout << std::endl;
    

    Grüssli



  • OK, vielen Dank. Das Script läuft jetzt


Anmelden zum Antworten