检查std :: cin变量类型

时间:2015-01-02 23:32:46

标签: c++ std cin

我正在学习函数和函数参数。我试图在下面调用一个名为int repeat(int rep){...}的函数是函数int repeat()的代码。

int repeat(int rep){
    std::cout << "Do you wish to factorial another number? Y or N: " <<
        std::endl;
    char c1;
    restart:
    std::cin >> c1; /* pretend user input is "7". the below if statement should execute the `throw`            statement. However it does not evaluate the if statement as true. and passes over it.*/
    try{
        if (std::cin.fail()){
            throw std::runtime_error(" Must enter y for yes or n for no.");
        }
        if (c1 == 'y' || c1 == 'Y'){
            return rep = 1;
        }
        else{
            //system("pause");
            return rep = 0;
        }
    }
    catch (std::runtime_error err2){
        std::cout << err2.what() << std::endl;
        std::cin.clear();
        std::cin.ignore();
        goto restart;
    }
}

我的代码中的问题出现在第一个if语句中: if (std::cin.fail()){ throw std::runtime_error(" Must enter y for yes or n for no."); }

我试图使用std::cin.fail()来测试存储在变量char c1中的输入实际上是一个char类型。示例:如果用户在c1中输入数字,则if语句应执行throw语句。但它不会发生。如果用户在std::cin >> c1中输入非字符类型,那么任何人都可以协助使if语句正确执行吗?

注意:我在程序的不同部分使用了这个方法来测试std::cin的输入是否为int类型,if语句是否按预期工作。

0 个答案:

没有答案