第10章 输入输出流.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文档。上传文档
查看更多
* 3. 文件的读写指针 在输入文件流中,保留着一个指向文件下一个读取数据位置的内部指针,叫读指针。同样在输出文件流中,保留着一个指向文件下一个写数据位置的内部指针,叫写指针。 为了方便二进制方式的读写,系统提供了设置和读取文件的读写指针位置的函数。使用类成员函数write与read,并配合使用类成员函数seekp和seekg,就可以对文件进行“随机性”(非顺序性)的读写操作。 * 1) istream::tellg 格式:long tellg( ); 功能:获取“读指针”的当前位置值。 ?2) ostream::tellp 格式:long tellp( ); 功能:获取“写指针”的当前位置值。 * 3) ostream::seekp 格式:ostream seekp(long offset,int dir=ios::beg); ? 功能:将“写指针”的值设置到一个新位置,使以后的输出从该新位置开始。新位置由参数offset与dir之值确定。 4) istream::seekg 格式:istream seekg(long offset,int dir=ios::beg ); 功能:将“读指针”的值设置到一个新位置,使以后的读入从该新位置开始。新位置由参数offset与dir之值确定。 * 参数offset 给出一整数,表示相对偏移字节数,大于0时向文件尾方向移动,小于0时向文件头方向移动。 参数dir决定offset 的数是从哪里开始计算的,有三个取值(在ios 类中说明): enum seek_dir{ beg=0; //相对于文件开始位置 cut=1; //相对于指针当前位置 end=2; //相对于文件尾的位置 }; * 例:从键盘输入10个int型数,而后按输入的相反顺序输出它们。 实现方法:使用binary文件,将数据存放在文件中,并使用随机访问方式读出。 程序见p10_13.cpp * 作业:P365 思考题:5、6、8、12、13 练习题:2、3、6、9、14 * * *10.3.3 用户定义格式控制符 C++的I/O 系统还提供了自定义格式控制符的功能。格式控制符定义时采用函数形式。一般在下面两种情形下,由用户定义自己的格式控制符是有必要的。 (1) 用于输出空格的格式控制符: ostream sp(ostream outs){ return outs ;} 格式控制sp经过用户的定义后,它就可以在格式输出过程中使用。例如: coutaspGroup:sp43.75endl; * (2) 也可以在I/O 格式控制中定义一些包含复合动作的控制符: istream hexin(istream in){ inhex;//输入数据时不用带前导符0x coutEnter number using hexadecimal format:; return in; }; ostream Bankout(ostream out){ out.setf(ios::left,ios::adjustfield); out$setw(12)setfill(#); return out; }; 完整程序见P10_6.cpp * 10.7 其他输入输出控制函数 10.7.1 I/O 操作状态控制 在类ios 中定义了一个以枚举类型形式出现的I/O 的操作状态标志变量io_state: enum ios_state{ goodbit=0x00; //流处于正常状态 eofbit=0x01; //输入流结束,忽略下一抽取操作 failbit=0x02; //最后的I/O 操作失败,流可恢复 badbit=0x04; //最后的I/O 操作非法,流可恢复 hardfail=0x08; // I/O 出现致命错误,流不可恢复 } * 读取I/O 状态位的函数有: int good(); // I/O 若流正常则返回非0,否则返回0 int eof(); //输入流状态字的eofbit 位为1 则返回 非0,否则返回0 int fail(); //流状态字的failbit,badbit 和 hardfail 中任一个置1,则返回非0, 否则返回0 int bad(); //流状态字的badbit,hardfail 位中任一 个置1 则返回非0,否则返回0 int rdstate(); //返回当前出错状态 int operator!(); //与函数fail()功能相同 * 注意:!等价于fail() 例如:if (!cout) 等

文档评论(0)

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

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

1亿VIP精品文档

相关文档