ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:32.87KB ,
资源ID:19423507      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19423507.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第九章流类库和输入文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第九章流类库和输入文档格式.docx

1、(2)文本文件(3)二进制文件(4)字符(5)字节9.1.8 当系统需要读入数据时是从 (1) 文件读入,即 (2) 操作。而系统要写数据时,是写到 (3) 文件中,即 (4) 操作。(1)输入(2)提取(3)输出(4)插入9.1.9 在面向对象的程序设计中,C+数据存入文件称作 (1) ,而由文件获得数据称作 (2) 。按常规前者往往放在 (3) 函数中,而后者放在 (4) 函数中。(1)把对象存入文件(2)由文件重构对象(3)析构函数(4)构造函数9.1.10 文件的读写可以是随机的,意思是 (1) ,也可以是顺序的,意思是 (2) 或 (3) 。(1)可以从文件任何位置进行读写(2)从文

2、件头开始(3)从尾部续上9.1.11 +把每一个文件都看成一个 (1) 流,并以 (2) 结束。对文件读写实际上受到 (3) 指针的控制,输入流的指针也称为 (4) ,每一次提取从该指针所指位置开始。输出流的指针也称为 (5) ,每一次插入也从该指针所指位置开始。每次操作后自动将指针向文件尾移动。如果能任意向前向后移动该指针,则可实现 (6) 。(1)有序的字节(2)文件结束符(end of file marker)(3)文件定位(4)读指针(5)写指针(6)随机读写9.2 简答题9.2.1 因cin为缓冲流,当键盘一次输入数据过多,保存在缓冲区中了,但这些数据可能是错的,希望清空它,以便下一

3、次要求输入时,按提示正确输入,应该怎样办?答:只能读空缓冲区。9.2.2 流状态标志字state各位代表了什么?怎样使用?全0,goodbit=0x00,流正常第1位为1,eofbit=0x01,输入流结束,忽略后继提取操作;或文件结束,已无数据可取第2位为1,failbit=0x02,最近的I/O操作失败,流可恢复第3位为1,badbit=0x04,最近的I/O操作非法,流可恢复第4位为1,hardfail=0x08,I/O出现致命错误,流不可恢复,VC+6.0不支持采用成员函数进行操作:int ios:rdstate() const return state; /读取状态字operator

4、!() constreturn state&(badbit|failbit); /可用操作符!()代替fail()bad() return state & badbit; /返回非法操作位void ios:clear(int _i) lock();state=_i;unlock(); /人工设置状态,可用来清状态eof() const return state&eofbit; /返回流(文件)结束位fail() constreturn state& /返回操作非法和操作失败这两位good() constreturn state=0; /正常返回1,否则返回09.2.3 为什么cin输入时,空格

5、和回车无法读入?这时可改用哪些流成员函数?因为空格和回车都可以作为数据之间的分格符,当输入串时空格和回车无法读入。可改用cin.get()和cin.getline()等流成员函数。9.2.4 在用cin输入结束时键入Z,则程序对以后的输入怎样处理?如果要求恢复正常,应执行什么成员函数?不再理会以后的所有输入。可执行成员函数:cin.clear(0); 使流恢复正常9.2.5 当输出字符串数组名时,输出的是串内容,有何办法可以输出串的首地址?将字符指针强制转换为泛型指针可以输出字符串地址9.2.6 文件的使用,有它的固定格式,请做简单介绍。1说明一个文件流对象,又被称为内部文件,如:fstrea

6、m iofile;2用文件流对象的成员函数打开一个磁盘文件。打开文件的成员函数的第一个参数为要打开的磁盘文件名。第二个参数为打开方式,有输入(in),输出(out)等,打开方式在ios基类中定义为枚举类型。如:iofile.open(“myfile.txt”,ios:in|ios:out);1,2两步可合成如下:fstream iofile(”myfile.txt”,ios:3使用提取和插入运算符对文件进行读写操作,或使用成员函数进行读写。4关闭文件。当打开一个文件进行读写后,应该显式地关闭该文件如:iofile.close();9.2.7 在ios类中定义的文件打开方式中,公有枚举类型ope

7、n_mode的各成员代表什么文件打开方式?in=0x01, /打开文件用于输入操作(从文件读取),如文件不存在则返回失败 out=0x02, /打开文件用于输出操作(写入文件) (缺省方式)/如文件存在,未同时设app,ate,in则文件清空 ate=0x04, /打开文件用于输入/输出,文件指针在文件尾,但新数据可写到任何位置 app=0x08, /打开文件用于输出,但从尾部添加,新数据只能添加在尾部 trunce=0x10, /打开文件,并清空它,不存在则建立新文件 binary=0x80 /以二进制方式打开文件9.2.8 文本文件可以按行也可以按字符进行拷贝,在使用中为保证完整地拷贝各要

8、注意哪些问题?按字符进行拷贝首先必须设置关闭跳过空白(如:iofile.unsetf(ios:skipws),因为提取(“”)运算符在缺省情况下是跳过空白(包括空格,制表,backspace和回车等)的,这样拷贝的文件会缺少一些字符。第二,该程序应能确定文件是否拷贝结束。按行进行拷贝,getline()回车换行符并不放在buf中,因此要加一个回车换行符。9.2.9 对文件流,“!”运算符完成什么功能?返回状态字state操作非法和操作失败这两位。9.2.10 二进制文件读函数read()能否知道文件是否结束?应怎样判断文件结束?读函数并不能知道文件是否结束,可用状态函数int ios:eof(

9、)来判断文件是否结束。必须指出系统是根据当前操作的实际情况设置状态位,如需根据状态位来判断下一步的操作,必须在一次操作后立即去调取状态位,以判断本次操作是否有效。9.2.11 由二进制文件和文本文件来保存对象各有什么优点和缺点?使用二进制文件,可以控制字节长度,读写数据时不会出现二义性,可靠性高。同时不知格式是无法读取的,保密性好。文件结束后,系统不会再读(见eofbit的说明),但程序不会自动停下来,所以要判断文件中是否已没有数据。使用文本文件来保存对象,操作简单,但谁都可以读取这些数据,无保密性。9.2.12 文件的随机访问为什么总是用二进制文件,而不用文本文件?在C+中可以由程序来实现文

10、件指针的移动,从而实现文件的随机访问,即可读写流中任意一段内容。一般文本文件很难准确定位,所以随机访问多用于二进制文件。9.2.13 怎样使用istream和ostream的成员函数来实现随机访问文件?在ios类中说明了一个公有枚举类型:enum seek_dir beg=0,/文件开头 cur=1,/文件指针的当前位置 end=2/文件结尾;istream类中提供了如下三个成员函数:istream&istream:seekg(streampos);/指针直接定位seekg(streamoff, ios:seek_dir);/指针相对定位long istream:tellg();/返回当前指针

11、位置seekg(streamoff,ios:seek_dir)应用最广,如: datafile.seekg(-20L,ios:cur);表示将文件定位指针从当前位置向文件头部方向移20个字节。 datafile.seekg(20L,ios:beg);表示将文件定位指针从文件头向文件尾方向移20个字节。end);表示将文件定位指针从文件尾向文件头方向移20个字节。tellg()和seekg()往往配合使用。ostream类也提供了三个成员函数管理文件定位指针,它们是:ostream&ostream:seekp(streampos);seekp(streamoff,ios:long ostream

12、:tellp();定位指针只有一个但函数有两组,这两组个函数功能完全一样。二. 编程与综合练习题9.3 编程实现以下数据输入输出:a) 以左对齐方式输出整数,域宽为12;b) 以八进制、十进制、十六进制输入输出整数;c) 实现浮点数的指数格式和定点格式的输入输出,并指定精度;d) 把字符串读入字符型数组变量中,从键盘输入,要求输入串的空格也全部读入,以回车换行符结束;e) 以上要求用流成员函数和流操作子各做一遍。解:特别注意flags()和setf()的使用方法。注意注释。#includeiomanipusing namespace std;int main(void) int inum1=2

13、55,inum2=8191,inum3=65535; double fnum=31.415926535,fnum1; char str255; cout以左对齐方式输出整数,域宽为12:endl; cout.flags(ios:left); cout.width(12);coutinum1;inum2;inum3left|ios:oct|ios:showbase);/或(cout.flags()|ios:showbase) cout.setf(ios:hex,ios:hex|ios:oct);/或cout.setf(ios:hex);cout.unsetf(ios: /特别注意第二个参数要包含

14、第一个参数,否则两个参数位置上的位全清零,结果错 cout.precision(10); /精度为10位,小数点后10位scientific,ios:floatfield);/floatfield为0x1800科学数表达方式:fnumfnum1;/输入3.1415926535fnum1/由输出看输入精度无作用 cin.get();/吸收回车请输入一个字符串: cin.getline(str,255);str cout.flags(0);leftdecsetw(12)showbaseocthex setprecision(10)scientificfixed /精度10位,指小数点后10位 re

15、turn 0;9.4 修改【例9.3】,增加一个字符串输入后要求确认,以保证输入的字符串(如姓名、地址等)无误。 char ch,str255; do coutch; cin.get();/吸收输入Y or N时留下的回车 while(!(ch=Y|ch=y);输入正确:9.5 重载学生类的“”运算符。fstreamstringclass student int id ; /学号 string name; / 姓名 char sex; / 性别 int age; / 年龄 string address; /家庭地址 float eng, phy, math, electron; /英语,物理,

16、数学和电子学成绩public: student(int=0,string=#,char=#,int=0,string=,float=0,float=0,float=0,float=0); friend ostream&operator(istream&sour,student& /重载提取运算符 /流类作为形式参数必须是引用student:student(int i,string n,char s,int a,string add,float en,float ph,float ma,float ele) id=i; name=n; sex=s; age=a; address=add; eng

17、=en; phy=ph; math=ma; electron=ele;st) /重载插入运算符 distst.idtst.namest.sexst.agest.address st.engst.physt.mathst.electronst.id;请输入姓名:st.name;请输入性别:st.sex;请输入年龄:st.age;请输入地址:st.address;请输入英语、物理、数学、电子各科成绩:st.engst.physt.mathst.electron; return sour;int main() student st1,st2(2104105,陈英,m,19,黄山路380号,89,78

18、,90,96);st1;st1”运算符,对所有可能的错误都能要求重输。class Complex double Real,Image; Complex(double r=0.0, double i=0.0):Real(r),Image(i);/定义构造函数 /见【例5.7】,这里省略,以节约篇幅s,const Complex&z);s,Complex&a);s,const Complex &z) return s(z.Realz.Imagec; while(c!=&c!.!(c0c while(c!/读空数字串前的无用字符 s.putback(c);/返回一个字符到输入缓冲区re;/实部 s.get(c);/因为可能是回车);/读空数字串后的无用字符 if(c= do/只读数字串 s while(c! s.putback(c);im;/虚部 do s.get(c); else im=0;/无此步,第二次赋值出错 if(c!)s.clear(ios:failbit);/漏了括号给一个操作失败标志 else/无括号,返回一个字符到输入缓冲区 if(s) a=Complex(re,im); return s; Complex a,b,c,d;输入

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1