欢迎来到天天文库
浏览记录
ID:40959977
大小:61.50 KB
页数:6页
时间:2019-08-11
《异常和流 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.ShowErrI9、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<<"Fileopenorcrea11、teerror!"<>name>>age>>origin;cout<12、ta.txt");//打开文件if(!myfile)//判断文件是否被打开{cerr<<"Fileopeno
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
12、ta.txt");//打开文件if(!myfile)//判断文件是否被打开{cerr<<"Fileopeno
此文档下载收益归作者所有