如果输入了错误的数据类型,则终止程序

时间:2015-02-18 02:13:25

标签: c++

如果用户输入非整数,我试图让这段代码自动终止。截至目前,它识别非整数但不会自动退出程序。

double readCoeffs() {

    double i;
    bool valid = false;
    while (!valid)   {

        valid = true;
        cout << "Enter a coefficient\n" << endl;
        cin >> i;

        while (cin.fail()){  {
                //stream is the correct type, if not it returns true,
                //false otherwise.

                cin.clear(); //This corrects the stream.
                cin.ignore(); //This skips the left over stream data.
                cout << "Please enter an Integer only." << endl;
                valid = false; //The cin was not an integer so try again.
                //break;
            }
            cout << "\n";
            return i;
        }
    }
}

我认为一个休息陈述会这样做,但我一定是误解了它......

好奇我在这里做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

为什么你会认为添加break或从方法返回会退出程序?这种方式仅在您从main()返回时才有效。

您最好的选择是将控制代码添加到任何调用readCoeffs()以确保代码退出。

其他选项

  • 致电exit()
  • 抛出未捕获的异常

无论你做什么,不要只是在糟糕的输入上默默地失败......