异常和流 C++作业.doc_第1页
异常和流 C++作业.doc_第2页
异常和流 C++作业.doc_第3页
异常和流 C++作业.doc_第4页
异常和流 C++作业.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验四 异常和流实验内容:实验一:实验要求:写一个带有Range和Size异常的完整的Vector模板,并编写一个异常类来处理这两类错误。异常类中应包含若干成员函数,比如:一个带有一参数的构造函数,该参数表示的是错误类型;一个可以查询错误类型的函数type();一个可以处理这两类错误的函数showErrInfo(),等等, 错误处理可以是显示相应的错误信息。并编写相关的测试程序。实验的程序实验:#includetemplate class Vector /类模板private:T *p; /指针类型是T int size; /用来比较与其范围的关系int range; /定义数字所在范围public: Vector(int s) /构造函数range=max;size=s;if(smax) throw ErrVector(ErrRange); /抛出错误是ErrRange类类型的 p=new Ts; /若没有超出范围,新开辟空间给p T& operator(int i) /运算符重载返回类型是T类型的引用 if(i=size)throw ErrVector(ErrSize); /抛出ErrVector 类型的错误 return pi; /若无溢出则将p【i】返回Vector()delete p; /虚构函数,释放p所占的内存空间;enum ErrKdErrRange,ErrSize; /枚举出抛出的错误类型class ErrVector /建立错误类 private:ErrKd errkd; /枚举类实例 public:ErrVector(ErrKd m)errkd=m;ErrKd type() if(errkd=ErrRange) coutrange type: error!endl; else coutsize type: error!endl; return errkd;void ShowErrInfo() /显示错误类型if(errkd=ErrRange)coutSize is falt!endl; elsecoutRange is falt!endl;void main()tryVector S(1000); /模板实例化 catch(ErrVector m)m.type();m.ShowErrInfo();tryVector S(100); /模板实例化S105;catch(ErrVector n)n.type();n.ShowErrInfo();实验结果和分析1.结果显示2.结果分析 我们定义定义一个Range为100是而用105时出现第二类错误,即Size类错误。当定义一个Range为100时,而Size赋为1000时就会产生错误,则Range类错误。这与要求是相一致的实验二:实验要求:利用面向对象编程中类、继承和多态的技术,去编写一个检查字符串是否合法的程序。供测试的字符串数据存储于文件data.txt中,要求程序要把含有错误字符串的行显示出来,并同时写到另外一个文件err.txt中(文件的读写要使用流类来实现)。比如data.txt的文件内容是:(每一行信息:姓名 年龄 籍贯。姓名和籍贯只能是字母,年龄不能为负或大于120)实验代码实现:#include /文件处理头文件#include#include /字符串处理头文件using namespace std;void show() /显示函数char name20,age3,origin20;ifstream txtfile; /输出文件txtfile.open(f:C+wferr.txt); /打开文件if(!txtfile) /判断文件是否被打开cerrFile open or create error!nameageorigin;coutname age originendl; /输出内容txtfile.close(); /关闭文件void main()int i,k=0,m=0,year=0;char name20,age3,origin20;ifstream myfile; /输出文件 fstream txtfile; /输入文件myfile.open(f:C+wfdata.txt); /打开文件if(!myfile) /判断文件是否被打开cerrFile open or create error!endl;exit(1);txtfile.open(f:C+wferr.txt,ios:out|ios:trunc);/打开文件,如果文件以前有数据,清除数据if(!txtfile) /判断文件是否被打开cerrFile open or create error!nameageorigin;k=strlen(name); /判断名字中是否又不合法的字符 for(i=0;ik;i+)if(nameiz)m=1;k=0; /判断年龄中是否又不合法的字符k=strlen(age);for(i=0;ik;i+)if(agei9)m=1;for(i=0;i120)m=1; k=0;/判断籍贯中是否又不合法的字符k=strlen(origin); for(i=0;ik;i+)if(originiz)m=1; if(m=1)txtfilename age originn;/如果有不合法的就将不合法的数据存入err.txt m=0; year=0;myfile.close();/关闭文件txtfile.close();show();运行结果显示:输入数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论