Проверка на ввод нечисловых данных 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 << "Введите число: ";
    }
}
→ Ссылка