Проверка на ввод нечисловых данных C++
Необходимо написать часть кода, который при вводе данных с клавиатуры будет пропускать только числа. Также он должен высчитывать выражения (например, если ввели 8-3, переменной присваивается 5), ну либо же чтобы он вообще не пропускал такие выражения. При введении иных данных-выводит на экран ошибку. Пользовалась стандартным if cin.fail, но при вводе выражения он ломается
Ответы (1 шт):
Автор решения: Иван Павлов
→ Ссылка
Чел держи) Работает для целочисленных переменных. Если ввод неверен, то будет просить ввести, пока не введешь правильное значение.
void checkInt(istream& ios, int& value) {
while (!(ios >> value) || ios.get() != '\n') // cin.fail() возвращает 1 если установлен failbit
{
cout << "Нужны только цифры!\n";
ios.clear(); // сбрасывает все биты потока, тоесть поток становится "хорошим"
ios.sync();//Удалим данные из буффера
cin.ignore(999, '\n');
cout << "Введите число: ";
}
}