coo588
2021-01-28 15:53急~救救菜鸡吧,C++用cin.clear()和cin.sycn()清空缓存区一直清不了!
望大牛解答!!!
为什么用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条回答
为你推荐
- 菜鸡求教,stm32f103的板子,做两路pwm输出,结果有一路没反应。
- c语言
- 1个回答
- asp.net对接签名算法与支付宝签名算法相同的支付接口
- c#
- visual studio
- asp.net
- 2个回答
- ajax获取数据更新table以后,jquery.datatable的js效果失效了该怎么办呀QAQ?
- html5
- javascript
- bootstrap
- jquery
- ajax
- 2个回答
- 菜鸡求教,stm32f7做串口通信时,串口复用PA9改成其他口之后就失效了?
- c语言
- 3个回答
- C语言的宏定义只能是定义一串数字吗?
- c语言
- 开发语言
- c++
- 2个回答
换一换