Хочу сделать ввод числа с клавиатуры, в случае если введенный символ не число запрашивать у пользователя повторный ввод до тех пор пока он не введет число. Проблема в том что при неудачном вводе переменная не хочет менять свое значение и зацикливается цикл while.Заранее благодарен и прошу прощения если вопрос глупый, я новичок в с++ и в программировании в целом. Код программы ниже.
#include
#include
using std ::endl;
using std ::cout;
using std ::cin;
using namespace std; int main() { cin.exceptions(ios_base::failbit); double a; while (true) { try { cout << "Input number "; cin >> a; } catch(ios_base::failure) { cin.exceptions(ios_base::goodbit); cout<<"Get exception "; cin.clear(); //поток всё ещё сломан } cin.ignore(); } return 0; } Тут тебе исключения в помощь
Смущают 2 момента. 1. Что за long float? Допускаю, что есть такой тип, но лучше замени на double 2. Цикл while вообще не верный, cin >> a возвращает поток, а не логическое значение. Лучше считывай с консоли через getline(cin, str) а потом проверяй на соответствие числу. В общем, направление я тебе указал.