我正在学习函数和函数参数。我试图在下面调用一个名为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语句是否按预期工作。