2 回答

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
當(dāng)cin函數(shù)輸入錯(cuò)誤的時(shí)候,cin里面有個(gè)函數(shù)可以自動(dòng)檢測(cè)到輸入錯(cuò)誤,若想繼續(xù)輸入便要清楚掉這個(gè)錯(cuò)誤。可以利用函數(shù)cin.rdstate()函數(shù)來(lái)讀取錯(cuò)誤的標(biāo)識(shí)符看看。
#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;}
擴(kuò)展資料
c++中的cin函數(shù)語(yǔ)法
C++中的cin函數(shù)和C語(yǔ)言的scanf函數(shù)同理,均為從鍵盤中接收輸入內(nèi)容。
基本格式:cin>>要輸入的內(nèi)容;
cin函數(shù)輸入遇到空格,TAB鍵,回車也會(huì)終止輸入
例如:想要輸入zhang san
cin>>str;那么str只會(huì)接收zhang這個(gè)字符串,遇到空格自動(dòng)結(jié)束輸入。
C++中提供cin.getline(str,50),此時(shí)只遇到回車才會(huì)結(jié)束輸入,那么str中存儲(chǔ)了zhang san這個(gè)完整的字符串。

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
if(!cin)判斷是否輸入正確,如果輸入錯(cuò)誤的類型 比如你想輸入 int類型 結(jié)果輸入了char 則會(huì)出現(xiàn)cin輸入錯(cuò)誤
fail() 被設(shè)定為真 failbit被設(shè)定 cin被標(biāo)記錯(cuò)誤 不可用( 意思是 出現(xiàn)不匹配 )然后就得用clear()清除錯(cuò)誤狀態(tài) 就是清除錯(cuò)誤狀態(tài) (也就是把failbit設(shè)置為0)然后還得用 while(cin.get()!='\n')
continue;
吸收緩沖區(qū) 也就是錯(cuò)誤字符后面的字符之類的 知道換行符 例如想輸入 123 結(jié)果輸入123ab456,就用上面的做法 解決了 發(fā)現(xiàn)cin又可用了。
- 2 回答
- 0 關(guān)注
- 562 瀏覽
添加回答
舉報(bào)