次のC++コードは、ifstreamオブジェクトを使用して、 EOFに達するまでテキストファイル(1行に1つの数値)から整数を読み取ります。最後の行の整数を2回読み取るのはなぜですか?これを修正する方法は?
コード:
#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)で見られます。