小智 4
cin\ 的基类是std::basic_istream. 如果无法从流中提取请求的数据,输入流会指示可恢复错误。为了检查该错误位,std::basic_istream::fail()必须使用 \xe2\x80\x94 方法,true如果出现故障或false一切正常,它就会返回。重要的是要记住,如果出现错误,数据将保留在流中,当然,还必须使用 清除错误位std::basic_istream::clear()。此外,程序员必须忽略不正确的数据,否则尝试读取其他内容将再次失败。为此,std::basic_istream::ignore()可以使用方法。至于取值的有效范围,则必须手动检查。好了,理论已经足够了,这是一个简单的例子:
#include <limits>\n#include <iostream>\n\nint main()\n{\n int n = 0;\n\n for (;;) {\n std::cout << "Please enter a number from 1 to 10: " << std::flush;\n std::cin >> n;\n\n if (std::cin.fail()) {\n std::cerr << "Sorry, I cannot read that. Please try again." << std::endl;\n std::cin.clear();\n std::cin.ignore(std::numeric_limits<std::streamsize>::max(), \'\\n\');\n continue;\n }\n\n if (n < 1 || n > 10) {\n std::cerr << "Sorry, the number is out of range." << std::endl;\n continue;\n }\n\n std::cout << "You have entered " << n << ". Thank you!" << std::endl;\n break;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n希望能帮助到你。祝你好运!
\n