- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.4 文件操作与文件流 7.4.1 文件的概念 在实际应用中,常以磁盘文件作为对象。即从磁盘文件读取数据,将数据输出到磁盘文件。 所谓“文件”,一般指存储在外部介质上数据的集合。一批数据是以文件的形式存放在外部介质上的。操作系统是以文件为单位对数据进行管理的。要向外部介质上存储数据也必须先建立一个文件(以文件名标识),才能向它输出数据。 外存文件包括磁盘文件、光盘文件和U盘文件。目前使用最广泛的是磁盘文件。 对用户来说,常用到的文件有两大类,一类是程序文件(program file)。一类是数据文件(data file)。程序中的输入和输出的对象就是数据文件。 根据文件中数据的组织形式,可分为ASCII文件和二进制文件。 对于字符信息,在内存中是以ASCII代码形式存放的,因此,无论用ASCII文件输出还是用二进制文件输出,其数据形式是一样的。但是对于数值数据,二者是不同的。 图7.5 C++提供低级的I/O功能和高级的I/O功能。高级的I/O功能是把若干个字节组合为一个有意义的单位,然后以ASCII字符形式输入和输出。传输大容量的文件时由于数据格式转换,速度较慢,效率不高。 所谓低级的I/O功能是以字节为单位输入和输出的,在输入和输出时不进行数据格式的转换。 7.4.2 文件流类与文件流对象 文件流是以外存文件为输入输出对象的数据流。输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据。每一个文件流都有一个内存缓冲区与之对应。 请区分文件流与文件的概念。文件流本身不是文件,而只是以文件为输入输出对象的流。若要对磁盘文件输入输出,就必须通过文件流来实现。 在C++的I/O类库中定义了几种文件类,专门用于对磁盘文件的输入输出操作。在图7.2中可以看到3个用于文件操作的文件类: (1) ifstream类,它是从istream类派生的。 用来支持从磁盘文件的输入。 (2) ofstream类,它是从ostream类派生的。 用来支持向磁盘文件的输出。 (3) fstream类,它是从iostream类派生的。 用来支持对磁盘文件的输入输出。 要以磁盘文件为对象进行输入输出,必须定义一个文件流类的对象,通过文件流对象将数据从内存输出到磁盘文件,或者通过文件流对象从磁盘文件将数据输入到内存。 其实在用标准设备为对象的输入输出中,也是要定义流对象的,如cin,cout就是流对象,C++是通过流对象进行输入输出的。 在用磁盘文件时,由于情况各异,无法事先统一定义,必须由用户自己定义。 可以用下面的方法建立一个输出文件流对象: ofstream outfile; 现在在程序中定义了outfile为ofstream类(输出文件流类)的对象。但是有一个问题还未解决: 在定义cout时已将它和标准输出设备建立关联,而现在虽然建立了一个输出文件流对象,但是还未指定它向哪一个磁盘文件输出,需要在使用时加以指定。 7.4.3 文件的打开与关闭 1. 打开磁盘文件 打开文件是指在文件读写之前做必要的准备工作,包括: (1) 为文件流对象和指定的磁盘文件建立关联,以便使文件流流向指定的磁盘文件。 (2) 指定文件的工作方式。 以上工作可以通过两种不同的方法实现。 a.调用文件流的成员函数open。如 ofstream outfile;//定义ofstream类(输出文件流类)对象outfile outfile.open(″f1.dat″,ios::out); //使文件流与f1.dat文件建立关联 调用成员函数open的一般形式为 文件流对象.open(磁盘文件名,输入输出方式); 磁盘文件名可以包括路径,如″c:\\new\\f1.dat″,如缺省路径,则默认为当前目录下的文件。 b. 在定义文件流对象时指定参数 在声明文件流类时定义了带参数的构造函数,其中包含了打开磁盘文件的功能。因此,可以在定义文件流对象时指定参数,调用文件流类的构造函数来实现打开文件的功能。如 ostream outfile(″f1.dat″,ios::out); 一般多用此形式,比较方便。作用与open函数相同。 输入输出方式是在ios类中定义的,它们是枚举常量,有多种选择,见书中表7.6。 说明: ① 新版本的I/O类库中不提供ios::nocreate和ios::noreplace
您可能关注的文档
最近下载
- 2024年大数据技术试题库(含答案).pdf
- 艾兰德ALD6000P系列变频器使用手册(中文).pdf
- NB∕SH∕T 0944.2-2020 润滑剂抗磨损性能的测定 FE8滚动轴承磨损试验机法 第2部分:润滑脂.pdf
- 四川大学2020年11月课程考试考试《103014电子商务》参考答案.doc
- 廉洁案例教育(廉洁党课)-1.ppt VIP
- 游泳馆突发紧急事件处理预案.doc
- 国开(中央电大)专科《财务管理》网上形考(任务一至四)试题及答案.docx
- 我的教育教学故事(荟萃20篇).docx VIP
- 部编版小学语文六年级上册期中考试试卷(含答案).doc
- 数学北师大版五年级上《比较图形的面积》说课课件.pptx
文档评论(0)