为了账号安全,请及时绑定邮箱和手机立即绑定

您好,不太明白关于c++ cin.clear()到底是什么意思呢!求解释!

您好,不太明白关于c++ cin.clear()到底是什么意思呢!求解释!

C++ C
德玛西亚99 2021-10-27 21:19:25
int i;for(i=0;i<num;i++){int temp;cout<<"Please input the # "<< (i+1)<<" number: "<<endl;cin>>temp;if(!cin){cin.clear();while(cin.get()!='\n')continue;cout<<"Bad input"<<endl;break;}else if(temp<0)break;array[i]=temp;能不能详细地解释一下if(!cin){cin.clear();while(cin.get()!='\n')continue;cout<<"Bad input"<<endl;break;}这段语句里if(!cin),clear()和while的那条语句到底是干什么的呢,为什么一定要while和clear的那条语句呢,求解求解,谢谢
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

当cin函数输入错误的时候,cin里面有个函数可以自动检测到输入错误,若想继续输入便要清楚掉这个错误。可以利用函数cin.rdstate()函数来读取错误的标识符看看。

#include <iostream>using namespace std;int main(){

int number;

cin>>number;

cout<<"first input"<<endl;

cout<<cin.rdstate()<<endl;

cin>>number;

cout<<"end input!"<<endl;

system("pause");

return 0;}

扩展资料

c++中的cin函数语法

C++中的cin函数和C语言的scanf函数同理,均为从键盘中接收输入内容。

基本格式:cin>>要输入的内容;

cin函数输入遇到空格,TAB键,回车也会终止输入

例如:想要输入zhang san

cin>>str;那么str只会接收zhang这个字符串,遇到空格自动结束输入。

C++中提供cin.getline(str,50),此时只遇到回车才会结束输入,那么str中存储了zhang san这个完整的字符串。



查看完整回答
反对 回复 2021-10-31
?
手掌心

TA贡献1942条经验 获得超3个赞

if(!cin)判断是否输入正确,如果输入错误的类型 比如你想输入 int类型 结果输入了char 则会出现cin输入错误
fail() 被设定为真 failbit被设定 cin被标记错误 不可用( 意思是 出现不匹配 )然后就得用clear()清除错误状态 就是清除错误状态 (也就是把failbit设置为0)然后还得用 while(cin.get()!='\n')
continue;
吸收缓冲区 也就是错误字符后面的字符之类的 知道换行符 例如想输入 123 结果输入123ab456,就用上面的做法 解决了 发现cin又可用了。

查看完整回答
反对 回复 2021-10-31
  • 2 回答
  • 0 关注
  • 498 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信