[問題] C++Primer4 istream::failbit無效的問題
開發平台(Platform): VC++2005
額外使用到的函數庫(Library Used):just iostream
問題(Question):
#include<iostream>
using namespace std;
int main()
{
int ival;
while(cin >> ival, ! cin.eof()) //故意輸入字元讓它錯誤
{ //跑到cin.fail() = true
if(cin.bad())
throw runtime_error("IO stream corrupted");
if(cin.fail())
{
cerr << "bad data, try again";
cin.clear( istream::failbit ); //這一句好像沒啥用
continue; //跳回去迴圈頭之後,就無窮迴圈了
}
}
return 0;
}
餵入的資料(Input):'a'
預期的正確結果(Expected Output):輸入下一個值
錯誤結果(Wrong Output):
bad data, try againbad data, try againbad data, try againbad data, try
againbad data, try againbad data, try againbad data, try againbad data,
try againbad data, try againbad data, try againbad data, try againbad d
ata, try againbad data, try againbad data, try again....(到無窮)
程式碼(Code):(請善用置底文網頁, 記得排版) 如上
補充說明(Supplement):
C++ Prime 4/e p.289 查詢和控制Stream的狀態
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.224.25
※ 編輯: Zephyr750 來自: 114.33.224.25 (05/16 22:43)
→
05/16 22:48, , 1F
05/16 22:48, 1F
→
05/16 22:51, , 2F
05/16 22:51, 2F
→
05/16 23:26, , 3F
05/16 23:26, 3F
→
05/16 23:26, , 4F
05/16 23:26, 4F
嗯~我其實不是只有想讓它正常動而已啦!
只是想了解istream這一類的東西怎麼使用!
好像不是cin.clear();就設定成沒事了!
若輸入字元
還要
char ch;
cin >> ch; //讓它吐出來
才可以進行下一次的 cin >> ival;
那這次是
cin.clear(); //之後
再加上
cin.ignore(); //這句是什麼意思呀?(Primer看到目前,還沒有介紹)
iostream這部份,卡關卡了一天!><
※ 編輯: Zephyr750 來自: 114.33.224.25 (05/17 00:10)
→
05/17 00:11, , 5F
05/17 00:11, 5F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章