Ich schreibe ein Programm, das mehrere Variablen aus einer Textdatei nimmt. Wenn das Programm EOF findet,
beendet es die Dateneingabe.Unterschied zwischen ifstream.good() und bool (ifstream)
int main()
{
int val, count = 0;
ifstream fileIn;
fileIn.open("num.txt");
fileIn >> val;
while (fileIn)
{
++count;
cout << "number: " << val << endl;
fileIn >> val;
}
cout << "count: " << count << endl;
fileIn.close();
return 0;
}
num.txt
Datei: 11 22 33 44
Programmausgabe:
number: 11
number: 22
number: 33
number: 44
count: 4
Alles ist in Ordnung. Aber wenn ich den während Bedingung Abschnitt von fileIn
zu fileIn.good()
ändern,
die Programmausgabe wird wie folgt aussehen:
number: 11
number: 22
number: 33
count: 3
Es ist nun letzten Wert springt. Warum passiert das und was ist der Unterschied zwischen fileIn
und fileIn.good()
?
http://en.cppreference.com/w/cpp/io/basic_ios/good – chris