c++cin.clear()的输入错误处理
作者:野牛程序员:2023-12-01 14:11:23 C++阅读 2950
cin.clear()通常用于清除流的错误标志,而不是处理输入错误本身。如果你想要处理输入错误,可以结合使用cin.clear()和cin.ignore()来清除错误标志并清除输入缓冲区。以下是一个简单的例子:
#include <iostream>
#include <limits>
int main() {
int number;
std::cout << "Enter an integer: ";
// 尝试读取整数
std::cin >> number;
// 检查输入是否有效
while (std::cin.fail()) {
std::cout << "Invalid input. Please enter an integer: ";
// 清除错误标志
std::cin.clear();
// 清除输入缓冲区
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\\n');
// 重新尝试读取整数
std::cin >> number;
}
// 在这里可以使用有效的整数进行后续处理
std::cout << "You entered: " << number << std::endl;
return 0;
}这个例子中,当std::cin.fail()检测到输入错误时,程序会要求用户重新输入,并使用std::cin.clear()清除错误标志,然后使用std::cin.ignore()清除输入缓冲区。这有助于防止无限循环读取相同的错误输入。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

