初学者C ++异常

时间:2018-09-27 20:04:13

标签: c++ exception

我有一个函数int read_int(const std :: string&提示符),该函数读取提示消息以询问数值,然后该函数返回该值。 该函数内部的while循环将继续进行,直到用户输入正确的输入(在这种情况下为数字)为止,如果用户提供了非数字输入,则函数会提示用户输入另一个数字。我遇到的问题是,当我输入一个非数字值时,它捕获了错误,但是程序终止了,而不是再次提示用户。感谢您使该程序正常工作的任何帮助。

#include <iostream>
#include <string>
#include <stdexcept>
#include <ios>
#include <limits>

int read_int(const std::string& prompt){

    std::cin.exceptions(std::ios_base::failbit); //Throws exception when an input error occurs
    int num = 0; // user input

    while(true){ //Loops until valid input

        try{

            std::cout << prompt;
            std::cin >> num;
            return num;
        }
        catch(std::ios_base::failure& ex){

            std::cerr << "Bad numeric string, try again" << '\n';
            std::cin.clear(); //Resets the error flag
            std::cin.ignore(std::numeric_limits<int>::max(), '\n'); //Skips current input line
        }
    }
}

int main() {

    std::string message = "Enter a number: ";

    read_int(message);

    return 0;
}

0 个答案:

没有答案