Прежде всего, я бы вообще посоветовал против этого - плохой ввод от пользователя - почти правило, а не исключение.
Если вы все равно настаиваете на этом, вы, вероятно, сделали бы это, приняв что-нибудь в качестве ввода, а затем выдав исключение, если / если это не то, что вы хотите:
// Warning: untested code.
// Accepting negative numbers left as an exercise for the reader.
int get_int(std::istream &is) {
std::string temp;
std::getline(temp, is);
for (int i=0; i<temp.size(); i++)
if (!isdigit(temp[i]))
throw std::domain_error("Bad input");
return atoi(temp);
}
Я повторяю, однако, что я не думаю, что это вообще хорошая идея. Я хотел бы отметить (для одного примера), что iostreams уже определяет бит fail
специально для таких ситуаций (и обычный operator>>
для чтения int использует этот механизм).