- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 文件的输入和输出
文件位置指针是一个整数值,它是用相对于文件起始位置的字节数表示的,是文件起始位置的偏移量。
您可能关注的文档
- 第04章 Android应用开发基础(6学时).pptx
- 第05章 物联网主要通讯技术.ppt
- 第01章照相机.ppt
- 第05讲语用原则.ppt
- 第 五 章 种植制度-农经(2013.11.5).ppt
- 第06章 商务谈判中的沟通艺术.ppt
- 第05章管理绝招:打理店铺井井有条.ppt
- 第05讲-CDMA通信-载波传输.ppt
- 第 2 章 图像的选取与基本编辑.ppt
- 第06章 生产风险管理.ppt
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)