望大牛解答!!!
为什么用cin.clear()和cin.sycn()之后,输入非法字符,会自动变成之前输入的东西??
看代码
#include<iostream>
using namespace std;
void main(){
int choice;
int i=1;
cout<<"第"<<i<<"次输入"<<endl;
cout<<"cin.fail()="<<cin.fail()<<endl;
cin>>choice;
i++;
cout<<choice<<endl;
cout<<"第"<<i<<"次输入"<<endl;
cin.clear();
cin.sync();
//fflush(stdin);
//cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout<<"cin.fail()="<<cin.fail()<<endl;
cin>>choice;
i++;
cout<<choice<<endl;
cout<<"第"<<i<<"次输入"<<endl;
cin.clear();
cin.sync();
//fflush(stdin);
//cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout<<"cin.fail()="<<cin.fail()<<endl;
cin>>choice;
i++;
cout<<choice<<endl;
cout<<"第"<<i<<"次输入"<<endl;
cin.clear();
cin.sync();
//fflush(stdin);
//cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout<<"cin.fail()="<<cin.fail()<<endl;
cin>>choice;
i++;
cout<<choice<<endl;
system("pause");
}
看输出效果
我输入感叹号!后,为什么结果是1啊??我想让他是非法的。