我有两个文件。 main.cpp中:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream file;
file.open("file.txt");
if (!file.good()) {
cout << "Error." << endl;
return 1;
}
int n;
while (!file.eof()) {
file.clear();
file >> n;
if (!file.good() && !file.bad()) {
continue;
} else {
cout << "Hardware error." << endl;
break;
}
cout << n << endl;
}
file.close();
return 0;
}
和file.txt:
a 1 2 321b9 ac.de ef#@g 5 #3
我想只读取此文件中的整数并将其写入控制台。当文件只包含整数时,程序运行良好,但当它包含任何无效字符时,我会得到无限循环。我该如何解决这个问题?
答案 0 :(得分:1)
循环是因为流不提取非整数的字符。您需要在尝试读取另一个整数之前将其解压缩。
可能只需要一点小小的调整就可以了;
// on a failed read...
file.clear();
char dummy;
file >> dummy;
continue;
关于使用while (!file.eof())
的附注;通常不建议这样做。在这个问题上,SO上有几个Q&amp; A。