aus leerer textdatei werden komische werte gelesen



  • hallo
    ich habe ein problem und zwar läuft es folgendermassen ab:

    zuerst überprüfe ich ob die gewünschte datei (test.txt) vorhanden ist, wenn sie es nicht ist, wird sie erstellt.
    wenn sie schon vorhanden ist, wird dieser teil ausgelassen und natürlich keine neue datei erstellt.

    danach lese ich heraus,was in der datei steht.
    nun habe ich das problem, wenn die datei neu erstellt wird (sie ist komplett leer), und danach den inhalt auslese, das irgendwie etwas wie "□" herausgelesen wird.

    Mein Quellcode sieht folgendermassen aus:

    ifstream myfile("test.txt");
    
    if(!myfile)
    {
                ofstream newfile("test.txt");
                newfile.close();
    }
    
    char zeilen[100];
    myfile.getline(zeilen,100);
    datumaustextdatei = zeilen;
    
    if(datumaustextdatei == "")
    {
        ....
    }
    else
    {
        ....
    }
    


  • Mal blöd gefragt: Wenn du weißt, dass die Datei leer ist, warum versuchst du dann was auszulesen?



  • hmm, gute frage 🙂



  • Hat getline einen rueckgabewert? - und wenn welchen?

    Warum testet Du nicht EOF?



  • DerAltenburger schrieb:

    Warum testet Du nicht EOF?

    Das würde nicht wirklich viel bringen. Wenn du einen Stream auf EOF testest, dann wird lediglich geprüft ob das EOF-Bit gesetzt ist, weiter nichts. Wenn sollte man dann auch direkt noch das Fail-Bit testen, aber das alles macht er ja schon wenn er abfragt:

    if(!myfile) 
    {
       //bla...
    }
    

    Das handelt sowohl EOF als auch die Fail-Bit Prüfung ab.

    Zus anderen Frage:

    template<class CharType, class Traits, class Allocator>
       basic_istream<CharType, Traits>& getline(
          basic_istream<CharType, Traits>& _Istr,
          basic_string<CharType, Traits, Allocator>& _Str
    );
    

Anmelden zum Antworten