Будьте осторожны с этим. Следующее создаст бесконечный цикл, если пользователь вводит букву:
int main(int argc, char* argv[])
{
int i=0;
do {
std::cout << "Input a number, 1-5: ";
std::cin >> i;
} while (i <1 || i > 5);
return 0;
}
Проблема в том, что std::cin >> i
будет не удалять что-либо из входного потока, если это не число. Поэтому, когда он повторяет цикл и вызывает std::cin>>i
во второй раз, он читает то же самое, что и раньше, и никогда не дает пользователю возможности ввести что-нибудь полезное.
Таким образом, безопаснее всего сначала прочитать строку, а затем проверить наличие числового ввода:
int main(int argc, char* argv[])
{
int i=0;
std::string s;
do {
std::cout << "Input a number, 1-5: ";
std::cin >> s;
i = atoi(s.c_str());
} while (i <1 || i > 5);
return 0;
}
Возможно, вы захотите использовать что-то более безопасное, чем atoi
.