Я пишу программу, которая берет несколько переменных из текстового файла. Когда программа находит EOF,
она заканчивает ввод данных.
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
файл: 11 22 33 44
Вывод программы:
number: 11
number: 22
number: 33
number: 44
count: 4
Все в порядке. Но если я изменю раздел условия while с fileIn
на fileIn.good()
,
вывод программы будет выглядеть так:
number: 11
number: 22
number: 33
count: 3
Теперь он пропускает последнее значение. Почему это происходит и в чем разница между fileIn
и fileIn.good()
?