C++_继和派生类.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C_继和派生类

15.3 文件流 文本文件和二进制文件 使用方法 #includeiostream.h int k; cink; coutk; cin为istream类的对象,即 istream cin;且与键盘输入对应; cout为ostream类的对象,即 ostream cout;且与显示器对应; 回 忆 1. 从哪输入、输出到哪? 2. 如何实现? 3. 能否从文件输入或 输出到文件? 4. 如何实现? 15.3.1 文件的概念 文件一般指存储在外部介质上的数据的集合。操作系统是以文件为单位对数据进行管理的,通过对文件名的操作存取文件。 根据文件中数据的组织形式,可分为ASCII码文件和二进制文件。 ASCII码文件又称为文本文件,数据是以其所对应字符的ASCII码形式存储的,即每个字节单元的内容均为字符的ASCII码,被读出后能够直接送到显示器或打印机上显示或打印出对应的字符,供人们直接阅读; 二进制文件则是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。 对于字符信息,在内存就是以ASCII码的格式存放的,因此,无论存放在文本文件中或是二进制文件中,其数据的格式是一样的;但是对于数值数据,如整型数值123456,在内存中占用4个字节,其存放在二进制文件和文本文件中的数据格式如图所示。 在标准库文件“fstream.h”中定义了三个用于文件操作的文件类: ①ifstream类,是istream的派生类,类中定义了磁盘文件数据向内存输入的有关操作,即用于文件的输入。但具体的输入操作还要依靠定义该类的对象实现, ifstream infile; 定义了输入文件类对象infile,就如同定义了cin一样,相当于建立了一个数据流入内存空间的通道,但磁盘中具体是哪个文件中的数据流入内存还要用其他语句说明。 ②ofstream类,是ostream的派生类,定义了内存数据向磁盘文件输出的有关操作,即用于文件的输出。 ③fstream类,是iostream的派生类,定义了磁盘文件数据向内存输入和内存数据向磁盘文件输出的有关操作,即用于文件的输入输出。 打开文件 文件的打开是读写文件前所做的准备工作,具体包括: ①使文件通道(即定义的文件流类的对象)与具体的磁盘上的指定文件建立关联; ②指定欲操作的文件的打开方式,如文件是用于输入还是输出,文件是文本文件还是二进制文件等。 文件的打开有两种方法: ①调用文件流类的构造函数,在定义文件对象时按指定的方式打开有关文件,其格式为: 类名 文件流对象名(磁盘文件名, 打开方式); 例如: ifstream infile(a1.dat, ios::binary); 在程序所在的当前目录下打开一个二进制文件a1.dat用于向内存空间输入数据。 ofstream outfile(b1.txt); 在程序所在的当前目录下打开一个文本b1.txt用于存放内存中的输出数据。 ②调用文件流类的成员函数open,在定义文件流类的对象后按指定的方式打开具体文件。其格式为: 文件流对象名.open(磁盘文件名, 打开方式); 例如: ifstream infile; infile.open(a1.dat, ios::binary); 这两种打开文件方法的结果是一样的。 当打开文件的操作成功,则文件流对象为非零值,反之,打开文件的操作失败,文件流对象的值为0。在程序中可以根据文件流对象的值来判断打开文件的操作是否成功。 例如: ifstream infile; infile.open(a1.dat, ios::binary); if(!infile) coutopen file error!endl; 关闭文件 当打开一个文件进行读写后,应该显式地关闭该文件。用成员函数close()关闭文件,格式如下: 文件流对象名.close(); 例如: ifstream infile(a1.dat, ios::binare|ios::nocreate); if(!infile) cout输入文件不存在!endl; …… infile.close(); 成员函数close()是无参函数。在关闭文件的过程中,系统把指定文件相关联的文件缓冲区中的数据写到文件中去,保证文件的完整性,收回与该文件相关的内存空间可供再分配;同时把指定文件名与文件流对象的关联断开,结束程序对该文件的操作。 15.3.3 对文本文件的操作 文本文件是由ASCII字符组成

文档评论(0)

135****6041 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档