У меня есть функция int read_int (const std :: string & prompt), которая читает сообщение с запросом числового значения, затем функция возвращает значение.Цикл 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;
}