看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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)
james732:改成這樣試試? http://pastie.org/1910782 05/16 22:48
Zephyr750:可以了耶!不過,為什麼呀?這個部份書裡沒有講得很清楚 05/16 22:51
loveme00835:http://goo.gl/9DnG0 clear這名字取得不好, 它其實是 05/16 23:26
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