第10章 输入输出流与文件—2.pptx

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

10.4 流的错误状态 在开发软件时,设计者需要考虑到用户在使用时可能输入或提供错误的数据,软件应当有一定的容错能力,以提高其稳健性。通常程序在运行过程中,数据输入或输出的许多环节都可能出现错误,为此C++提供了专门的流错误状态标识与测试方法。与流的格式状态控制方法相似,流类库中定义了多个错误状态位标志流的错误状态并控制流的输入与输出。 10.4 流的错误状态 错误标志 含 义 ios::goodbit 数据流无错误,eofbit、failbit、badbit均没有设置时,goodbit被设置 ios::eofbit 数据流已遇到文件尾(end-of-file) ios::failbit 数据流发生格式错误,属于可恢复错误,数据不丢失 ios::badbit 数据流发生不可恢复错误,数据丢失 VC++ 2010在ios类中定义了一组枚举常量,用于表示流错误,表10-6列出了流中定义的错误标志符和含义。 10.4 流的错误状态 流的错误状态可以通过ios类提供的成员函数进行测试或设置,常见的流错误状态检测和修改函数见表10-7。 函数原型 功 能 int rdstate() const 返回流的当前错误状态位 void clear(int s=0) 设置流的错误状态为指定值,默认为ios::goodbit int good() const 返回流的错误状态值,值为1表示正常,为0表示流错误 int eof() const 若遇到文件尾(eofbit位为1),返回值1(true),否则返回0(false) int fail() const 若流格式非法或流失败(failbit或badbit位为1),返回值1,否则为0 int bad() const 如果流操作失败(badbit位为1),返回值1,否则为0 10.4 流的错误状态 【例10-7】流错误状态标志符和操作函数应用示例。 程序说明: (1) 从运行结果可知,ios::eofbit的值为0x01,ios::failbit的值为0x02,ios::badbit的值为0x04,ios::goodbit的值为0。表明流错误状态字的0号位为eof标志位,1号位为fail标志位,2号位为bad标志位。当这些标志位均为清空状态时(值为0),流的状态为good。 (2) 在程序运行结果中,还显示了cin在没有任何操作时和输入错误数据后,错误状态位的情况。流状态测试函数rdstate()读出状态字的设置情况。当eof()、fail()和bad()这3个函数均返回0时,good()返回1,否则good()返回0。 10.5 文件的输入和输出 C++的标准I/O流类库中设计了专门用于文件处理的类ifstream、ofstream和fstream,它们为程序员提供了安全、高效、灵活的文件I/O,屏蔽了文件操作的复杂过程。 10.5.1 文件的基本操作 类似于流格式控制标志设置方法,C++中定义了一组枚举常量,用于控制文件的打开和定位等相关操作,通过它们可以设置文件流中用于控制文件操作方式的标志位,表10-8列出了ios中定义的枚举常量及其含义。 10.5 文件的输入和输出 操作标志 含 义 ios::in 打开文件用于输入 ios::out 打开文件用于输出 ios::ate 打开文件用于输出,文件指针移到文件尾,数据可以写入到文件的任何位置 ios::app 打开文件用于输出,新数据添加到文件尾 ios::trunk 打开文件并清空,文件不存在则建立新文件 ios::binary 打开文件,用于二进制输入或输出 ios::beg 文件开头 ios::cur 文件指针的当前位置 ios::end 文件结尾 10.5 文件的输入和输出 C++把文件视为有序的字节流。当打开一个文件时,程序需要创建一个文件流对象与之关联。流对象为程序提供了便捷地操作文件或设备的渠道。实事上,标准输入流对象cin允许程序从键盘或其他设备输入数据,标准输出流对象cout允许程序把数据输出到屏幕或其他设备。与标准输入/输出设备相似,文件流对象可视为是程序与文件之间进行数据交换的桥梁。 文件流在进行输入/输出操作时,受到一个文件位置指针(File Position Pointer)的控制。输入流中的指针简称为读指针,每一次提取操作均始于读指针当前所指位置,并且读指针自动向后(文件尾)移动。 输出流中的指针简称为写指针,每一次插入操作也是始于写指针的当前位置,并且指针也是自动向后移动的。 10.5 文件的输入和输出 文件位置指针是一个整数值,它是用相对于文件起始位置的字节数表示的,是文件起始位置的偏移量。

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档