Если istream не может быть вставлен, он установит бит сбоя.
int i = 0;
std::cin >> i; // type a and press enter
if (std::cin.fail())
{
std::cout << "I failed, try again ..." << std::endl
std::cin.clear(); // reset the failed state
}
Вы можете установить это в цикле do-while, чтобы получить правильный тип (int
в этом случае)
Для получения дополнительной информации: http://augustcouncil.com/~tgibson/tutorial/iotips.html#directly