0
我發現了一個奇怪的行爲與std :: ifstream(或更可能我錯過了如何正確使用它)。我有以下程序:從ifstream讀取兩次的符號
#include <iostream>
#include <fstream>
int main(int argc, char** argv) {
std::ifstream file;
file.open(argv[1]);
while(not file.eof()) {
int x;
file >> x;
std::cout << x << std::endl;
}
return 0;
}
我把它放在第一個包含用空格分隔的數字文件,如下所示:
1 34 567 3
程序輸出:
1
34
567
3
3
最後號碼總是被複制。我想這是因爲它在讀完最後一個數字後沒有達到EOF,它達到了文本文件的強制性'\ n',並且下一個文件>> x再次給了我最後一個讀取的數字。
我該如何正確地檢測到沒有更多的數字要讀取?