[问题] 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什么,不过书上找了找好像没找到线索..
http://i.imgur.com/HbEP9s3.png
作者: 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结果好像开始跑无穷循环不知道为什么...http://i.imgur.com/ZBYeOHL.png再次抱歉是自己程式码没打好,已经没有问题,谢谢!恩..又发现虽然输入1没问题,但是输入a就会跑无穷http://i.imgur.com/NBwC87q.png
作者: 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