[問題] C++ 程式碼問題

作者: name2name2 (yang~hi)   2015-04-18 17:47:28
開發平台(Platform):
VC++
問題(Question):
最近在看C++ primer 4e 自行摸索,
書上有些程式碼如下面這段打到電腦上時會出現錯誤,
自己看不出問題在哪裡,想要請教一下謝謝...
這是書上p289的程式碼(第八章形勢狀態)
程式碼(Code):(請善用置底文網頁, 記得排版)
//因為我是累積練習的所以include很多東西請見諒...
#include <iostream>
#include <string>
#include <vector>
#include <cctype>
#include <bitset>
#include <cstring>
#include <stdexcept>
#include <cstddef>
#include <cassert>
#include <cstdlib>
using std::cin; using std::cout; using std::string;
using std::endl; using std::vector; using std::toupper;
using std::bitset;
int main()
{
int i;
while (cin >> i, !cin.eof())
{
if (cin.bad())
throw runtime_error(" IO stream corrupted");
if (cin.fail()){
cerr << "bad data, try again";
cin.clear(istream::failbit);
continue;
}
}
system("pause");
return 0;
}
補充說明(Supplement):
附圖,主要是紅線的部分好像都undeclared或not found,我在想是不是我少include什麼,不過書上找了找好像沒找到線索..

作者: x000032001 (版廢了該走了)   2015-04-18 17:51:00
加std::在前面就好 因為你沒using到
作者: name2name2 (yang~hi)   2015-04-18 18:26:00
原來如此謝謝Orz已解決再翻了下其他文章發現好像用using namespace std;不過書上好像沒有寫到這個,只有教std下面成員的宣告第三章沒有寫到std本身的宣告,應是因此所以沒用到..這個問題解決之後剛剛跑了一下發現另一個問題,就是我剛輸入1結果好像開始跑無窮迴圈不知道為什麼..." target="_blank" rel="nofollow">
再次抱歉是自己程式碼沒打好,已經沒有問題,謝謝!恩..又發現雖然輸入1沒問題,但是輸入a就會跑無窮" target="_blank" rel="nofollow">
作者: RealJack   2015-04-18 20:46:00
http://blog.csdn.net/daineng/article/details/2252730建議看第5版,第5版改了很多東西
作者: name2name2 (yang~hi)   2015-04-18 21:04:00
一個月前網路查一下查到4e就買了QQ感謝回覆,不過我剛試了下如果是用continue,就算加上^ cin.rdstate() 好像還是無窮,改成break不管有沒有^ cin.rdstate()好像看不出差別,不過用break就沒有輸入錯誤循環讀取的效果,再次感謝回覆!
作者: RealJack   2015-04-18 21:19:00
沒實際跑sorry...記得在cin.clear();後加上cin.ignore()清除緩衝區,否則用break跳出還是不能輸入
作者: name2name2 (yang~hi)   2015-04-18 21:34:00
感謝已成功,我是將cin.clear(istream::failbit);改成cin.clear(); cin.ignore; continue;就正常運作了

Links booklink

Contact Us: admin [ a t ] ucptt.com