我发现std :: 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'文本文件,下一个文件&gt;&gt; x再次给我一个最后读取的数字。
如何才能正确检测到没有更多数字可供阅读?
答案 0 :(得分:1)
请尝试:
int x;
while(file >> x;) {
std::cout << x << std::endl;
}
为了更好地理解Please go through this.
希望这会对你有所帮助。