Я не большой поклонник включения исключений для iostreams. Ошибки ввода / вывода не являются достаточно исключительными, поскольку ошибки часто очень вероятны. Я предпочитаю использовать исключения только для менее частых ошибок.
Код не плохой, но пропуск 80 символов немного произвольный, и переменная ошибки не нужна, если вы возитесь с циклом (и должен быть bool
, если вы его держите). Вы можете поместить чтение из cin
непосредственно в if
, что, возможно, является идиомой Perl.
Вот мой дубль:
int taxableIncome;
for (;;) {
cout << "Please enter in your taxable income: ";
if (cin >> taxableIncome) {
break;
} else {
cout << "Please enter a valid integer" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
Помимо пропуска только 80 символов, это всего лишь незначительные придирки, и это скорее вопрос предпочтительного стиля.