可能重複:
Reading from text file until EOF repeats last line
c++ EOF running one too many times?爲什麼C++ ifstream的讀取與重複記錄
我寫一個簡單的C++代碼讀取和寫入二進制文件,但我發現ifstream會兩次讀取記錄。我不知道這是如何發生,但我嘗試編譯在Windows和Linux與mingw32的代碼,相同的情況下
ofstream outfile;
int data[5];
outfile.open("abc.out", ios::out | ios::trunc | ios::binary);
data[0] = data[1] = 1;
data[2] = data[3] = 2;
data[4] = -1;
cout << "ORIGINAL DATA:" << data[0] << " " << data[1] << " " << data[2] << " " << data[3] << " " << data[4] << endl << endl;
outfile.write((char *)&data[0], 5*sizeof(int));
outfile.close();
ifstream infile;
infile.open("abc.out", ios::in | ios::binary);
data[0] = data[1] = data[2] = data[3] = data[4] = 0;
while (!infile.eof())
{
infile.read((char *)&data[0], 5*sizeof(int));
cout << data[0] << " " << data[1] << " " << data[2] << " " << data[3] << " " << data[4] << endl;
}
這裏是輸出
原始數據:1 1 2 2 -1
1 1 2 2 -1
1 1 2 2 -1
'infile.eof()'只*後返回true *無法讀取,因此該循環運行一次太多。 – 2012-04-08 07:06:02
謝謝博佩爾鬆,但我還是不知道如何解決這個問題。讀「從文本文件中讀取直到EOF重複最後一行」,我嘗試下面的代碼 而(真){ ... 如果(infile.eof())破; } 但仍然無法正常工作 – user1285419 2012-04-08 07:09:29
@user - 您可以測試EOF,或檢查read'的'的返回值,決定寫信給COUT之前(暗示,暗示!)。 – 2012-04-08 07:13:50