关于cin
ios::cin.sync() ///清空缓冲区
ios::cin.rdstate() ///0表示正常输入数据类型,4表示发生错误
#include <iostream> int main() { int x; std::cin>>x;//1 2 std::cin.sync(); int y; std::cin>>y;//3 std::cout<<x<<" "<<y;//1 3 }
ios::cin.clear()///默认参数为0,即无错误正常输入,当发生错误如输入字母时,其内部标识符变为fail,即错误。用cin.clear()可以使其标识符变为0再配合cin.sync()清空缓冲区使数据正常读入否则会死循环。
#include <iostream> int main() { int x; while(true){ std::cin>>x; if(std::cin.fail()){ std::cout<<"input error!\n"; std::cin.clear(); std::cin.sync();///顺序不能反! } else{ std::cout<<x<<"\n"; } } }

浙公网安备 33010602011771号