我有一个函数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;
}