亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您好,不太明白關于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 關注
  • 564 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號