- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图7.5 C++提供低级的I/O功能和高级的I/O功能。高级的I/O功能是把若干个字节组合为一个有意义的单位,然后以ASCII字符形式输入和输出。传输大容量的文件时由于数据格式转换,速度较慢,效率不高。 所谓低级的I/O功能是以字节为单位输入和输出的,在输入和输出时不进行数据格式的转换。这种输入输出速度快、效率高,一般大容量的文件传输用无格式转换的I/O。但使用时会感到不大方便。 文件流是以外存文件为输入输出对象的数据流。输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据。每一个文件流都有一个内存缓冲区与之对应。 请区分文件流与文件的概念。文件流本身不是文件,而只是以文件为输入输出对象的流。若要对磁盘文件输入输出,就必须通过文件流来实现。 在C++的I/O类库中定义了几种文件类,专门用于对磁盘文件的输入输出操作。在图7.2中可以看到除了已介绍过的标准输入输出流类istream,ostream和iostream类外,还有3个用于文件操作的文件类: 7.4.2 文件流类与文件流对象 (1) ifstream类,它是从istream类派生的。 用来支持从磁盘文件的输入。 (2) ofstream类,它是从ostream类派生的。 用来支持向磁盘文件的输出。 (3) fstream类,它是从iostream类派生的。 用来支持对磁盘文件的输入输出。 要以磁盘文件为对象进行输入输出,必须定义一个文件流类的对象,通过文件流对象将数据从内存输出到磁盘文件,或者通过文件流对象从磁盘文件将数据输入到内存。 其实在用标准设备为对象的输入输出中,也是要定义流对象的,如cin,cout就是流对象,C++是通过流对象进行输入输出的。 由于cin,cout已在iostream中事先定义,所以用户不需自己定义。在用磁盘文件时,由于情况各异,无法事先统一定义,必须由用户自己定义。此外,对磁盘文件的操作是通过文件流对象(而不是cin和cout)实现的。文件流对象是用文件流类定义的,而不是用istream和ostream类来定义的。 可以用下面的方法建立一个输出文件流对象: ofstream outfile; 现在在程序中定义了outfile为ofstream类(输出文件流类)的对象。但是有一个问题还未解决: 在定义cout时已将它和标准输出设备建立关联,而现在虽然建立了一个输出文件流对象,但是还未指定它向哪一个磁盘文件输出,需要在使用时加以指定。 1. 打开磁盘文件 打开文件是指在文件读写之前做必要的准备工作,包括: (1) 为文件流对象和指定的磁盘文件建立关联,以便使文件流流向指定的磁盘文件。 (2) 指定文件的工作方式。 以上工作可以通过两种不同的方法实现。 (1) 调用文件流的成员函数open。如 ofstream outfile;//定义ofstream类(输出文件流类)对象outfile outfile.open(″f1.dat″,ios::out); //使文件流与f1.dat文件关联 调用成员函数open的一般形式为 7.4.3 文件的打开与关闭 文件流对象.open(磁盘文件名,输入输出方式); 磁盘文件名可以包括路径,如″c:\\new\\f1.dat″,如缺省路径,则默认为当前目录下的文件。 (2) 在定义文件流对象时指定参数 在声明文件流类时定义了带参数的构造函数,其中包含了打开磁盘文件的功能。因此,可以在定义文件流对象时指定参数,调用文件流类的构造函数来实现打开文件的功能。如 ostream outfile(″f1.dat″,ios::out); 一般多用此形式,比较方便。作用与open函数相同。 输入输出方式是在ios类中定义的,它们是枚举常量,有多种选择,见书中表7.6。 说明: ① 新版本的I/O类库中不提供ios::nocreate和ios::noreplace。 ② 每一个打开的文件都有一个文件指针。 ③ 可以用“位或”运算符“|”对输入输出方式进行组合。 ④ 如果打开操作失败,open函数的返回值为0(假),如果是用调用构造函数的方式打开文件的,则流对象的值为0。 2. 关闭磁盘文件 在对已打开的磁盘文件的读写操作完成后,应关闭该文件。关闭文件用成员函数close。如 outfile.close( );//将输出文件流所关联的磁盘文件关闭 所谓关闭,实际上是解除该磁盘文件与文件流的关联,原来设置的工作方式也失效,这样,就不能再通过文件流对该文件进行输入或输出。此时可以将文件流与其他磁盘文件建立关联,通过文件流对新的文件进行输入或输出。如 outfile.open(″f2.dat″,ios::app|ios::nocreate); 此时文件流outfile与f2.dat建立关联,并指定
您可能关注的文档
- 1-5+直流电机的磁场.ppt
- 05近代哲学·唯理论经验论.ppt
- 2011届高考数学要点回扣:第11讲+推理与证明、程序框图与复数.ppt
- 2011届数学高考复习全套精品PPT课件:第02单元第5节+函数的图象.ppt
- 单日K线图的研判.ppt
- 第三章visual+foxpro数据以其运算.ppt
- 列伯课件学员版最新.ppt
- 6periodUnit2英汉对比与翻译(一).ppt
- 2011届高考英语第一轮复习指导课件47.ppt
- 2011走向高考(全国版)数学A本·文科(教师讲义手册)课件7-4.ppt
- 统编版八年级上册道德与法治作业第三单元《勇担社会责任》单元测试题(含答案).pdf
- 云南省昆明市2024-2025学年高一上学期期中质量监测政治试卷(含答案).pdf
- 重庆市第八中学校2025-2026学年七年级上学期期中历史试卷(无答案).pdf
- 长沙市岳麓实验中学高二期中考试物理-教师用卷.pdf
- 云南省普洱市第一中学2025-2026学年高三上学期期中考试历史试题(含答案).pdf
- 2025-2026学年上学期广东省兴宁市宋声学校九年级中段考化学试卷.pdf
- 2025-2026学年河北省廊坊市固安县九年级(上)期中化学试卷(含答案).pdf
- 第八单元 中华民族的抗日战争和人民解放战争 单元检测卷 - 学生版.pdf
- 2025—2026学年度揭阳市惠来县第一学期历史期中质量.docx.pdf
- 2025-2026学年海南省海口市龙华区八年级(上)期中历史试卷(含答案).pdf
原创力文档


文档评论(0)