cin的缓存,你读取失败后,缓存内的内容不变,当你再次读取时,你读去的还是原来的内容,所以再次出错,而导致死循环 附程序: #include <iostream> #include <string> using std::cin; using std::cout; using std::endl; int main() { int a; while(!(cin>>a)) { cout<<"Error!Input again!"<<endl; cin.clear(); //清除错误标志位 std::string t; std::getline(cin,t); //将当前行从缓存中取出 //cin>>t; //将下一空格前的所有字符取出 /*或者 char t; cin.get(t); */ } return 0; }
cin.clear()
最新推荐文章于 2021-06-17 15:07:33 发布