Problem bei einlesen einer Datei mit Leerzeile am Ende



  • Hi,
    ich will eine Datei die folgendermaßen aussieht einlesen.
    1 456 0
    1 456 100
    1 0 30
    1 40 50
    2 0 300
    2 300 50
    2 45 50
    2 167 0

    am Ende befindet sich eine Leerzeile.
    Ich habe folgendes geschrieben

    fstream file;
    file.open("test", ios::in);
    int a, b, c;
    
    while(!file.eof())
    {
        file >> a >> b >> c;
    }
    

    leider werden mir bei der Leerzeile am ende die gleichen Daten wie zuvor nochmals in die variablen geschrieben bzw. sie stehen noch drin.
    Da hier noch nicht eof erreicht ist bricht die while schleife noch nicht ab.
    Wenn ich die variablen zuvor immer auf 0 setze erhalte ich 0 beim letzten einlesen 0 in den variablen, leider ist das unerwünscht.

    Ich habe viel gegoogelt und auch schon getline oder file.getline versucht aber hier habe ich das Problem dass ich nicht weis wie ich es aufteilen soll und in die variablen schreiben kann.

    Kann mir bitte jemand helfen.

    mfg Derin



  • du solltest eof erst abfragen nachdem du eine i/o operation gemacht hast.



  • ifstream file(test);//konstruktor nehmen, wenn möglich
    //richtige klasse nehmen
    
    int a, b, c;
    
    while(file >> a >> b >> c)//lustigerweise hier lesen
    {
       cout<<a<<b<<c<<'\n';    
    }
    


  • Vielen dank es funktioniert


Anmelden zum Antworten