Найдено результатов: 2

Чтение из текстового файла до EOF повторяет последнюю строку

Следующий код C++ использует объект ifstream для чтения целых чисел из текстового файла (который имеет одно число в строке), пока он не достигнет EOF . Почему он читает целое число в последней строке дважды? Как это исправить?

Код:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream iFile("input.txt");    // input.txt has integers, one per line

    while (!iFile.eof())
    {
        int x;
        iFile >> x;
        cerr << x << endl;
    }

    return 0;
}

input.txt :

10  
20  
30

Выход :

10  
20  
30  
30

Примечание: Я пропустил весь код проверки ошибок, чтобы сохранить небольшой фрагмент кода. Вышеописанное поведение наблюдается на Windows (Visual C++), cygwin (gcc) и Linux (gcc).

c++   iostream   fstream    

532   7   21:06, 1st October, 2020