异常和流 C++作业

异常和流 C++作业

ID:40959977

大小:61.50 KB

页数:6页

时间:2019-08-11

异常和流 C++作业_第1页
异常和流 C++作业_第2页
异常和流 C++作业_第3页
异常和流 C++作业_第4页
异常和流 C++作业_第5页
资源描述:

《异常和流 C++作业》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验四异常和流实验内容:实验一:实验要求:写一个带有Range和Size异常的完整的Vector模板,并编写一个异常类来处理这两类错误。异常类中应包含若干成员函数,比如:一个带有一参数的构造函数,该参数表示的是错误类型;一个可以查询错误类型的函数type();一个可以处理这两类错误的函数showErrInfo(),等等,错误处理可以是显示相应的错误信息。并编写相关的测试程序。实验的程序实验:#includetemplateclassVector//类模板{private:T*p;//指针类型是Ti

2、ntsize;//用来比较与其范围的关系intrange;//定义数字所在范围public:Vector(ints)//构造函数{range=max;size=s;if(s<0

3、

4、s>max)throwErrVector(ErrRange);//抛出错误是ErrRange类类型的p=newT[s];//若没有超出范围,新开辟空间给p}T&operator[](inti)//运算符重载返回类型是T类型的引用{if(i<0

5、

6、i>=size)throwErrVector(ErrSize);//抛出ErrVector类型的错误returnp[i];//若无

7、溢出则将p【i】返回}~Vector(){delete[]p;}//虚构函数,释放p所占的内存空间};enumErrKd{ErrRange,ErrSize};//枚举出抛出的错误类型classErrVector//建立错误类{private:ErrKderrkd;//枚举类实例public:ErrVector(ErrKdm){errkd=m;}ErrKdtype(){if(errkd==ErrRange)cout<<"rangetype:error!"<

8、kd;}voidShowErrInfo()//显示错误类型{if(errkd==ErrRange)cout<<"Sizeisfalt!"<S(1000);//模板实例化}catch(ErrVectorm){m.type();m.ShowErrInfo();}try{VectorS(100);//模板实例化S[105];}catch(ErrVectorn){n.type();n.ShowErrI

9、nfo();}}实验结果和分析1.结果显示2.结果分析我们定义定义一个Range为100是而用[105]时出现第二类错误,即Size类错误。当定义一个Range为100时,而Size赋为1000时就会产生错误,则Range类错误。这与要求是相一致的实验二:实验要求:利用面向对象编程中类、继承和多态的技术,去编写一个检查字符串是否合法的程序。供测试的字符串数据存储于文件data.txt中,要求程序要把含有错误字符串的行显示出来,并同时写到另外一个文件err.txt中(文件的读写要使用流类来实现)。比如data.txt的文件内容是:(每一行信息:姓名年龄

10、籍贯。姓名和籍贯只能是字母,年龄不能为负或大于120)实验代码实现:#include//文件处理头文件#include#include//字符串处理头文件usingnamespacestd;voidshow()//显示函数{charname[20],age[3],origin[20];ifstreamtxtfile;//输出文件txtfile.open("f:\C++wf\err.txt");//打开文件if(!txtfile)//判断文件是否被打开{cerr<<"Fileopenorcrea

11、teerror!"<>name>>age>>origin;cout<

12、ta.txt");//打开文件if(!myfile)//判断文件是否被打开{cerr<<"Fileopeno

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。