Существует энное количество лабораторных по программированию в универе, к каждой из них есть требование: проверка входных данных. Компилирую в MinGW Develover Studio, ввод-вывод производится через консоль. Есть ли какой-либо элегантный способ проверять input, если, например, пользователь вводит буквы/символы, в то время ввод производится в переменную типа int? Компилятор на такие вещи не реагирует, переменную не меняет, выводит либо старое целочисленное значение, либо мусор из памяти.
Возможностей проверить очень много:
1. Сохранить в строку и затем проверить, затем использовать atoi
2. Использовать scanf, указан выше
3. try/catch, указанный выше
4. cin
1й пункт хорош тем, что вы точно узнаете, что пользователь ввёл не число и его можно отругать, но по объему кода самый большой.
2й и 4й удобен простотой, но вы никогда не узнаете ввел ли пользователь 0 или просто набор символов.
3й видимо имелось ввиду cin, но для того, чтобы работали исключения их надо включить для данного потока cin.exceptions(ios::failbit);
ввод-вывод производится через консоль. Есть ли какой-либо элегантный способ проверять input, если, например, пользователь вводит буквы/символы
Вы бы ещё сказали, ввод-вывод через клавиатуру и монитор.
Если использовать scanf, то он возвращает, сколько полей реально отсканировано.
Т.е. scanf("%d", &i) вернёт 0 если ввести буквы.