c ++检查输入从文件读取失败

时间:2015-03-03 23:34:54

标签: c++

我正在编写一个简单的程序来从文件中读取一系列整数并输出它们的总和。我要确保输入确实是一个整数,如果不是,则退出程序。 我认为我正在做的一切正确,但程序在给出无效输入时不会中断。我正在测试这个文件包含: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;

}

1 个答案:

答案 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
}