c++cin.clear()的输入错误处理
作者:野牛程序员:2023-12-01 14:11:23 C++阅读 2607
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