weixin_44206033
coo588
2021-01-28 15:53

急~救救菜鸡吧,C++用cin.clear()和cin.sycn()清空缓存区一直清不了!

  • c++

望大牛解答!!!

为什么用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啊??我想让他是非法的。

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答