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";
}
}
}