我有一个验证用户输入的函数。通过 do-while 循环实现此检查。逻辑可以有条件地分为两部分。在第一部分,我检查用户输入的数字是否是整数 (int),在第二部分,我检查这个整数是否适合我。
第二部分有效:如果您输入的整数不适合我,则会在此处显示一条错误消息,并要求您再次输入该数字。
当您输入一个非整数数字时,会发生狂欢,出现在屏幕上。
可能是什么问题呢?
完整功能代码:
int gameboardSize(void) {
int size;
bool status(false); // для проверки на ввод "нормального" размера поля, желания продолжить игру
do {
cout << "Введите размер игрового поля (3 - 9) -->> ";
if (std::cin >> size) {}
else {
cout << "Введите число от 3 до 9 -->> ";
}
if (size > 2 && size < 10 && size > 0) {
status = true;
}
else {
cout << "Вы ввели неправильный размер игрового поля. Попробуйте ещё раз.\n";
}
} while (status != true);
return size;
}

好吧,看:您输入的不是数字。这意味着输入尚未被读取,它仍保留在流中,设置了失败标志......您再次要求他读取一个数字。他阅读-他第一次没有阅读的内容,再次遇到同样的问题(或者更确切地说,由于失败未重置,他不会阅读),一切都在循环......
不知何故,在做自由职业的时候 :),我为学生勾勒出了这样一种带有错误处理的阅读方式,看,也许它会派上用场 :)
但是这段代码不能正常工作。例如,如果您输入“1.2”,这是一个实数,而不是整数,那么该函数将返回 1,尽管在我看来,它应该会抛出一个错误并要求您重新输入数字。