流类库流类库.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
流类库流类库

8.3 文件的I/O操作 enum open_mode { in= 0x01, //读方式 out= 0x02, //写方式 ate= 0x04, //新数据可添加到文件任意位置 app= 0x08, //新数据添加到文件尾部 trunce= 0x10,//若文件已存在,则打开并清除原有内容 nocreate= 0x20,//若文件存在,则打开,不存在时不创建 noreplace = 0x40,//若文件存在,则打开,不存在时创建 binary = 0x80 //以二进制方式打开文件 }; 说明: (1) 允许同时有一个以上的操作模式位为1。 (2) 除非文件被显式地定义为以二进制方式打开,否则文件的常规打开方式是文本方式。 8.3 文件的I/O操作 8.3.2 文本文件的输入输出 文件打开后,就可以对文件进行读/写操作了。在文件打开时,只要不定义为以二进制格式打开,文件打开的默认方式就是文本格式(text)。 文本文件支持对文件内容的顺序访问。所谓顺序访问,是指从文件的起始到文件的结束,顺序地访问(即存取)文件中的数据。 1.文本文件的读 由于ifstream类是从istream类公有派生产生的,因此ifstream类的对象可以使用istream类中定义的输入运算符“”,以及get()和getline()成员函数,来从文件到内存变量“输入”数据。 8.3 文件的I/O操作 【例8.4】 设计一个程序,分别用get()、getline()成员函数和输入运算符“”把当前工作目录下的Data1.dat文件中的字符数据显示在屏幕上。 (1) 用get()成员函数实现: 设文件Data1.dat中的数据为:   abcdefghijklmn   abcdefg   abc 则运行上述程序时屏幕显示为:   abcdefghijklmn   abcdefg   abc   字符个数为:26 8.3 文件的I/O操作 (2) 用getline()成员函数。程序设计如下: (3) 用输入运算符“”。程序设计如下: 8.3 文件的I/O操作 2.文本文件的写 由于ofstream类是从ostream类公有派生产生的,因此ofstream类的对象可以使用ostream类中定义的输出运算符“”以及公有成员函数put()来“输出”内存变量中的数据到文件中。 【例8.5】 设计一个程序,分别用put()成员函数和输出运算符“”把内存变量中的字符数据输出到当前目录下的文件  Data2.dat中。 (1)用put()成员函数输出实现: 该程序运行后,将在当前工作目录下创建文件Data2.dat,该文件中的数据为 abcdefghijklmn abcdefg Abc (2) 用输出运算符“”。程序设计如下: 8.3 文件的I/O操作 8.3.3 二进制文件的输入输出 在创建文件对象时,用逻辑或的方式加上二进制操作模式ios::binary,即表示采用二进制格式进行文件流的读或写。 二进制文件不仅支持顺序访问,即二进制文件的读/写也可以使用前面讨论的输入运算符“”和输出运算符“”方法以及get()和put()成员函数方法访问文件,而且支持随机访问。随机访问主要使用read()和write()成员函数读/写文件。 read()和write()成员函数原形如下: istream istream::read(char *, int); ostream ostream::write(const char *, int); 两个成员函数中,第一个参数是要和文件交换数据的字符串,第二个参数是要交换的字节个数。 8.3 文件的I/O操作 【例8.6】 二进制文件读/写示例。要求: (1) 设计一个包括姓名、学号和成绩的学生类。 (2) 程序中先把1个学生数据写入文件aaa.dat中,再从文件中读出该学生数据并显示在屏幕上。 程序运行后文件aaa.dat中永久保存了一个学生对象的数据,并且屏幕输出如下: 姓名:张三 学号:111 成绩:100 8.3 文件的I/O操作 8.3.4 随机文件的输入输出 在文件和内存交换数据中,文件指针指示了文件流的当前位置。C++语言中提供了定位文件指针的成员函数,使用定位文件指针成员函数可以把读/写文件指针定位在指定的记录位置上,从而可以实现随机访问文件。 操作读指针的成员函数格式为 istream seekg(偏移量,参照位置); 操作写指针的成员函数格式为 ostream seekp(偏移量,参照位置); 其中,第一个参数是文件指针相对于参照位置偏移的字节量,  第二个参数的取值及其含义如下: ios::beg //文件开始位置 ios::cur //当前指针位置 ios::end //文件结束位置 8.

文档评论(0)

dajuhyy + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档