在 C++ 中,如何处理错误的输入?就像,如果程序要求输入一个整数,当你输入一个字符时,它应该能够做一些事情,然后循环重复输入,但是当你输入一个整数时,循环进入无限期,反之亦然。
最佳答案
程序进入无限循环的原因是std::cin
的错误输入标志是由于输入失败而设置的。要做的是清除该标志并丢弃输入缓冲区中的错误输入。
//executes loop if the input fails (e.g., no characters were read)
while (std::cout << "Enter a number" && !(std::cin >> num)) {
std::cin.clear(); //clear bad input flag
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //discard input
std::cout << "Invalid input; please re-enter.\n";
}
见 the C++ FAQ为此,以及其他示例,包括在条件中添加最小值和/或最大值。
另一种方法是将输入作为字符串获取并使用 std::stoi
或其他允许检查转换的方法将其转换为整数。
关于c++ - 如何处理错误的数据类型输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10349857/