作者Zephyr750 (紅蓮西風750)
看板C_and_CPP
標題[問題] C++Primer4 istream::failbit無效的問題
時間Mon May 16 22:38:52 2011
開發平台(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)
→ Zephyr750:可以了耶!不過,為什麼呀?這個部份書裡沒有講得很清楚 05/16 22:51
→ loveme00835:setbit 05/16 23:26
嗯~我其實不是只有想讓它正常動而已啦!
只是想了解istream這一類的東西怎麼使用!
好像不是cin.clear();就設定成沒事了!
若輸入字元
還要
char ch;
cin >> ch; //讓它吐出來
才可以進行下一次的 cin >> ival;
那這次是
cin.clear(); //之後
再加上
cin.ignore(); //這句是什麼意思呀?(Primer看到目前,還沒有介紹)
iostream這部份,卡關卡了一天!><
※ 編輯: Zephyr750 來自: 114.33.224.25 (05/17 00:10)
→ loveme00835:先上我貼的那個網站看介紹吧, 順便學自己找資料 05/17 00:11