实验四 流运算符的重载及文件的使用.docx
- 文档编号:11073043
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:9
- 大小:17.25KB
实验四 流运算符的重载及文件的使用.docx
《实验四 流运算符的重载及文件的使用.docx》由会员分享,可在线阅读,更多相关《实验四 流运算符的重载及文件的使用.docx(9页珍藏版)》请在冰豆网上搜索。
实验四流运算符的重载及文件的使用
实验报告
(2014/2015学年第二学期)
课程名称
面向对象程序设计及C++
实验名称
实验四:
流运算符的重载及文件的使用
实验时间
2016
年
5
月
30
日
指导单位
计算机研究中心
指导教师
陈景强
学生姓名
班级学号
学院(系)
专业
实验报告
实验名称
流运算符的重载及文件的使用
指导教师
陈景强
实验类型
验证
实验学时
2
实验时间
4
一、实验目的和要求
(1)掌握在自定义的类中重载输入流运算符>>和输出流运算符<<,并输入/输出本类对象。
(2)掌握文件操作的步骤和方法,能利用程序建立数据文件、打开数据文件并进行相关操作。
二、实验环境(实验设备)
硬件:
微型计算机
软件:
MicrosoftVisualC++6.0
三、实验原理及内容
实验题目
(1):
在多态性实验第2题的基础上,在复数类中增加输入流运算符>>和输出流运算符<<的重载,主函数通过“cin>>对象名”输入对象的值,通过“cout<<对象名”输出对象的值,输出复数值时将原来主函数中“对象名.print()”改成“cout<<对象名”形式。
在上一步完成的基础上,将复数类改成一个类模板,只设一个模板参数,即实部和虚部用同一种类型,修改相应的代码,完成输入、输出功能。
实验解答:
(1)源代码参考多态性实验第2题。
(2)记录重载operator<<函数的代码:
ostream&operator<<(ostream&s,constComplex&c)
{
cout< if(c.imag! =0) { if(c.imag>0)cout<<"+"; cout< } cout< returns; } (3)将类改写成类模板: (多态性实验代码中的重载符号仅保留加法+,其他可省略)#include usingnamespacestd; template classComplex { private: Treal; Timag; public: Complex(Tr=0,Ti=0) { real=r; imag=i; } friendComplexoperator+(constComplex&a,constComplex&b); friendComplexoperator-(constComplex&a,constComplex&b); friendostream&operator<<(ostream&out,constComplex&a); friendistream&operator>>(istream&in,constComplex&a); Complexoperator*(constComplex&a); Complexoperator/(constComplex&a); }; template ostream&operator<<(ostream&out,constComplex&a) { out< if(a.imag! =0) { if(a.imag>0) out<<"+"; out< } out< returnout; } template istream&operator>>(istream&in,constComplex&a) { in>>a.real; if(a.imag! =0) { if(a.imag>0) in>>"+"; in>>a.imag>>"i"; } returnin; } template Complex { Complex temp.real=a.real+b.real; temp.imag=a.imag+b.imag; returntemp; } template Complex { Complex temp.real=a.real-b.real; temp.imag=a.imag-b.imag; returntemp; } template Complex : operator*(constComplex { Complex temp.real=real*a.real; temp.imag=imag*a.imag; returntemp; } template Complex : operator/(constComplex { Complex temp.real=real/a.real; temp.imag=imag/a.imag; returntemp; } voidmain() { Complex cout<<"a1="; cin>>a1; cout<<"a2="; cin>>a2; cout<<"originala1is: "< cout<<"originala2is: "< a3=a1+a2; cout<<"a3=a1+a2="< a4=a1-a2; cout<<"a4=a1-a2="< a5=a1*a2; cout<<"a5=a1*a2="< a6=a1/a2; cout<<"a6=a1/a2="< } 实验报告 实验题目2: 事先用Windows的记事本建立一个文本文件ff.txt。 ①编写一个函数voidReadFile(char*s)实现读取以s串为文件名的文本文件的内容在屏幕上显示。 ②编写一个函数voidChange(char*s1,char*s2)将文本文件中的小写字母全部改写成大写字母生成一个新文件ff2.txt。 ③主函数中调用ReadFile("ff.txt");显示ff.txt的内容,调用Change("ff.txt","ff2.txt");根据ff.txt文件作修改生成一个新的文件ff2.txt,最后再调用ReadFile("ff2.txt");显示新文件的内容。 实验解答: voidReadFile(char*s) { charch[100]; ifstreaminf(s); if(! inf) { cout<<"Cannotopenthefile! \n"; return; } inf.get(ch); cout< inf.close(); } //请完成代码 voidChange(char*s1,char*s2) { ifstreamifile("ff.txt"); if(! ifile) { cout<<"ff.txtcannotbeopenned! "< return; } ofstreamofile("d: \\temp\\ff2.txt"); if(! ofile) { cout<<"ff2.txtcannotbeopenned! "< return; } charch; while(ifile.get(ch)) { ch=ch-32; ofile.put(ch); } ifile.close(); ofile.close(); } //请完成代码 实验题目3(选做): 定义学生类,该类包含学生的一些基本信息: 学号、姓名、性别、成绩。 定义流对象,实现用write函数将学生信息以二进制方式写到磁盘文件stu.dat中。 再用read将磁盘中的学生信息读到内存显示在屏幕上。 实验解答: (1)Student: : Student(char*nu,char*na,char*se,ints)//构造函数 { } ostream&operator<<(ostream&out,constStudent&s)//重载输出运算符<< { } (2)voidCreateBiFile(char*filename) { ofstreamout(filename); tudentstu[3]=______________________________________________//对象数组的初始化 out.write(_______________________________);//两个实在参数自己填写 out.close(); } (3)voidReadBiFile(char*filename) { Studentstu[num]; inti=0; ifstreamin(filename); while(! in.eof())//读出记录并显示 in.close(); } 实验报告 四、实验小结(包括问题和解决方法、心得体会、意见与建议等) 1.在题目 (1)中,是否可以将模板参数改为两个使得实部和虚部类型可以不同,有什么好处? 可以,对于一个对复数实部和虚部数据类型有不同要求的设计,可以轻松实现。 2.在题目 (2)中如将主函数作如下修改,请补充完整程序: intmain() {chars1[20],s2[20]; cin>>s1>>s2;//从键盘上输入要操作的文件名 Change(__s1,s2_____________________); //调用Change函数将s1串为文件名的内容修改后保存到以s2串为文件名的文本文件中 ReadFile(__s2_____________________);//读取s2串为文件名的文本内容 return0; } 3.其它问题及解决方法: 4.心得体会: 我学会了流运算符的重载和文件的使用方法。 五、指导教师评语 成绩 批阅人 日期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验四 流运算符的重载及文件的使用 实验 运算 重载 文件 使用