我正在编写一个简单的程序来从文件中读取一系列整数并输出它们的总和。我要确保输入确实是一个整数,如果不是,则退出程序。 我认为我正在做的一切正确,但程序在给出无效输入时不会中断。我正在测试这个文件包含:1 2 3 4 5 6 7 8 bla 9 有没有我在这里看不到的东西?
由于
#include <iostream>
#include <Fstream>
using namespace std;
int main(int argc, char const *argv[])
{
ifstream dataFile;
int number, total = 0;
if (argc < 2) { cout << "You forgot to specify the file name." << endl; exit(-1);}
dataFile.open(argv[1]);
while (dataFile>>number){
if(dataFile.fail()) {cout<< "Found a not number"<<endl; exit(-2);}
else total += number;
}
cout << total << endl;
dataFile.close();
return 0;
}
答案 0 :(得分:1)
如果输入错误,while循环的condition将为fail
while (dataFile>>number){ // will fail
因此程序永远不会以这样的错误状态到达这一行:
if(dataFile.fail())
您可以尝试:
while (datafile >> number){ // loop until problem
total += number;
}
if (dataFile.fail() && !datafile.eof()) { // if problem is bad input
cout << "Found a not number" << endl;
exit(-2); // then stop
}