C/C++

Как сделать проверку на число типо если кто то ввел не число то будет чтото выводить на экран c++

Можно эту проверку сделать в последнем else if ?
в плюсах не пишу, к сожалению, но логику могу подсказать:
По хорошему эту проверку надо в самом начале делать, иначе у тебя предположительно прога выкинет исключение раньше, чем дойдет до проверки на число. Не знаю как плюсы отреагируют на подачу им данных другого типа (тоесть если я напишу АБВ, вместо числа). Если никак, то да, теоретически ты можешь последний else if() заменить просто на else{} и вывести, что введенные данные не верны т. к. прога у тебя просто проверяет возраст больше или меньше 7.

Вот нашел на просторах инета проверку на тип введенных данных, должно помочь:

double i;
cin >> i;

while (!(i != static_cast(i) )
{
cout << "Error. Please enter a valid input: ";
cin >> i;
cin.ignore(80, '\n');
}
АС
Аян С
9 703
Лучший ответ
Сейчас сброшу примеры ввода. Ранее делали здесь
Владимир Кащеев https://pastebin.com/kLGx2NHK
здесь в частности cin.good(); проверяет на возникновении ошибки ввода в int некорректного значения
С точки зрения эргономики консоли лучше всего вводить строку, а потом распознавать её вид как число. Такие функции, как stoi(), stod(), обладают возможностями отлавливать некорректное значение параметра.

Но такие же возможности есть и у потоков ввода. Существует термин "повреждение потока". Причём, это не считается ошибкой и ни операционной системой, ни тем более компилятором не отслеживается. Однако, собственные методы потоков дают возможность выяснить в любой момент: исправен поток или повреждён? Например, cin.fail() возвращает true, если поток повреждён.
Чтобы сбросить состояние потока, следует вызвать cin.clear()
Денис Дубинкин Если выше чтения из потока переменной присвоить значение, то уже после ввода, если переменная сохранила своё исходное значение, то это считается косвенным, хотя и не достоверно, признаком повреждения потока.

Вообще, предварительная инициализация переменной, в которую должен осуществляться ввод, считается хорошим тоном в программировании, поскольку в случае некорректного ввода в переменной остаётся неизменённое значение. А если инициализации не было, то может нарушиться логика программы!!!

В Вашем примере, разве логично судить о введённом значении, когда фактически ничего не введено, а исходное значение переменной age непредсказуемо?