第6章 流与文件操作.pptVIP

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

第6章 流与文件操作 6.0文件流概述 文件是保存在存储介质上一系列数据的集合。有两种含义,一种指一个外部设备。另一种指一个磁盘文件,存放在磁盘上的文件,每个文件都有一个文件名。 将文件看作是由连续的字符的数据顺序组成的。根据文件中数据的组织方式,可分为文本文件和二进制文件。文本文件中每一个字节用以存放一个字符的ASCII码值,而二进制文件是将数据用二进制形式存放在文件中,它保持了数据在内存中存放的原有格式。 无论是文本文件还是二进制文件,都需要用“文件指针”来操纵。一个文件指针总是和一个文件所关联的,文件打开时,文件指针指向文件的开始,随着对文件的处理,文件指针不断地在文件中移动,并一直指向最新处理的字符(字节)位置。 文件处理有两种方式,一种称为文件的顺序处理,从文件的第一个字符(字节)开始顺序处理到文件的最后一个字符(字节),文件指针也相应地从文件的开始位置到文件的结尾。另一种称为文件的随机处理,在文件中通过C++相关的函数移动文件指针,并指向所要处理的字符(字节)位置。按照这两种处理方式,可将文件相应地称为顺序文件和随机文件。 C++提供了文件操作的文件流库,如图。ifstream类是从istream类公有派生而来,用来支持从输入文件中提取数据的各种操作。ofstream类是从ostream公有派生而来,用来实现把数据写入到文件中的各种操作。fstream类是从iostream类公有派生而来,提供从文件中提取数据或把数据写入到文件的各种操作。filebuf类从streambuf类派生而来,用来管理磁盘文件的缓冲区,应用程序中一般不涉及该类。 6.0.1 输入输出操作是由“流”来处理的。数据从一个位置到另一个位置的流动抽象为“流”。数据从键盘流入到程序中时,这样的流称为“输入流”,数据从程序中流向屏幕或磁盘文件时,这样的流称为“输出流”。 当流被建立后就可以使用一些特定的操作从流中获取数据可向流中添加数据。从流中获取数据的操作称为“提取”操作,向流中添加数据的操作称为“插入”操作。 C++提供了四个预定义的标准流对象:cin、cout、cerr和clog。当在程序中包含了头文件“iostream.h”,编译器调用相应的构造函数,产生这四个标准流对象,在程序中就可以直接使用它们了。 6.0.2流的格式控制和错误处理 使用格式控制成员函数 在ios类中控制输入输出的成员函数有: int ios::width(); // 返回当前的宽度设置 int ios::width(int); // 设置宽度并返回上一次的设置 int ios::precision(); // 返回当前的精度设置 int ios::precision(int); // 设置精度并返回上一次的设置 char ios::fill(); // 返回当前空位填充的字符 char ios::fill(char);// 设置空位填充的字符并返回上一次的设置 long ios::setf(long); // 设置状态标志并返回上一次的状态标志 long ios::unsetf(long); // 消除状态标志并返回上一次的状态标志 long ios::flags(); // 返回当前的状态标志 long ios::flags(long); // 设置状态标志并返回上一次的状态标志 实例 ios 使用格式控制成员函数。 使用格式算子 格式算子是一个对象,可以直接被插入符或提取符操作。 流的错误处理 在输入输出过程中,一旦发现操作错误,流就会将发生的错误记录下来。可以使用提供的错误检测功能,检测和查明错误发生的原因和性质,然后调用clear()函数清除错误状态,使流能够恢复处理。 在ios类中,定义了一个公有枚举成员io_state来记录各种错误的性质: enum io_state { goodbit = 0x00, // 正常 eofbit = 0x01, // 已达到文件尾 failbit = 0x02, // 操作失败 badbit = 0x04 // 非法操作 }; 在ios类中又定义了检测上述流状态的下列成员函数: int ios::rdstate(); // 返回当前的流状态 int ios::bad(); // 如果badbit位被置位,返回非0 void ios::clear(int); // 清除错误状态 int ios::eof(); // 返回非0表示提取操作已到文件尾 int ios::fail(); // 如果failbit位被置位,返回非0 int ios::good(); // 操作正常时,返回非

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档