Schleife läuft einmal zu oft durch



  • Bei dieser

    do
    	{
    		c++;
    		in>>ch;
    		buffer.push_back(ch);
    	}while ( !in.eof() );
    

    aber auch hier

    while ( !in.eof() )
    	{
    		c++;
    		in>>ch;
    		buffer.push_back(ch);
    	}
    

    hat c am Ende denn Wert 5 obwohl die Datei nur 4 Zeilen hat. Also die Liste hat fünf Einträge und keine vier. Warum ?



  • Das eof-Flag wird erst gesetzt, wenn versucht wird über das Dateiende hinaus zu lesen. Deine Datei ist vollständig gelesen und noch ein Durchlauf der das eof-flag dann setzt. in.good() nehmen.


Anmelden zum Antworten