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

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

c++中關于IO的問題,如下:

c++中關于IO的問題,如下:

C++
料青山看我應如是 2018-11-12 13:13:01
#include <iostream>std::istream& get(std::istream& in) {   int ival;  while(in>> ival,!in.eof()){       if(in.bad()) throw   std::runtime_error( "IO   stream   corrupted ");       if(in.fail()){       std::cerr <<   "bad   data,try   again ";       in.clear();       continue;       }      std::cout << ival << "(loop)";   }   in.clear();  return   in;}using   namespace   std; int   main() {double   dval;get(cin); //cin >> dval; //cout << dval << "(outloop)" <<endl;                 return   0; }問題:我輸入int型的數是正常的,我輸入非法的數后,它會一直循環bad   data,try   again只能按ctrl+c結束。為什么會循環呢,不是只打印一次錯誤信息,然后continue就接著輸下一嗎?還有最后兩句就是加了//的那兩句,好像沒什么用?(網上下的例子)
查看完整描述

2 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

緩沖區的內容還在,加個in.sync():

in.clear();

in.sync();


查看完整回答
反對 回復 2018-11-15
?
米脂

TA貢獻1836條經驗 獲得超3個贊

得重新刷新緩沖區,清除緩沖區內容,同樓上


查看完整回答
反對 回復 2018-11-15
  • 2 回答
  • 0 關注
  • 825 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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