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

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的那条语句呢,求解求解,谢谢

德玛西亚99
浏览 499回答 2
2回答

哆啦的时光机

当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 sancin>>str;那么str只会接收zhang这个字符串,遇到空格自动结束输入。C++中提供cin.getline(str,50),此时只遇到回车才会结束输入,那么str中存储了zhang san这个完整的字符串。

手掌心

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