第七章 C++的I、O流类库.ppt

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

第七章 C++的I/O流类库 7.1 C++为何建立自己的输入输出系统 C++除了完全支持C 语言的输入输出系统外,还定义了一套面向对象的输入输出系统。为什么C ++还要建立自己的输入输出系统呢?C 语言的输入输出系统不支持用户自定义的对象,如: Struct my_struct{ int i; float f; char *str; }s; 对此结构类型,在C语言中下面的语句是不能接受的: printf(“%my_struct”,s); 因为printf( )函数只能识别系统预定义的类型,而没有办法对新的数据类型进行扩充.。用C++的输入输出系统,就可以通过重载“”和“”运算符来解以上问题。 C++的类机制允它建立一个可扩展的输入输出系统,它可以通过修改和扩展来加入用户自定义类型及相应操作。 7.2 C++的流及流类库 7.2.1 C++的流 输入输出是一种数据传递操作,它可以看作字符序列在主机与外部介质 之间的流动。流(stream)为从源(或生产者)到目的(或消费者)的数据流的引用。流具有方向性: 与输入设备(如键盘)相联系的流称为输入流;与输出设备(如屏幕)相联系的流称为输出流;与输入输出设备(如磁盘)相联系的流称为输入输出流。 C++中包 含几个预定义的流 : 标准输入流 cin 与标准输入设备相关联 标准输出流 cout 与标准输出设备相关联 非缓冲型标准出错流 cerr 与标准错误输出设备相关联(非缓冲方式) 缓冲型的标准出错流 clog 与标准错误输出设备相关联(缓冲方式) 在缺省情况下,指定的标准输出设备是显示终端,标准输入设备是键盘。 在任何情况下(有时用户 把标准输出设备定向为其它设备),指定的标准错误输出设备总是显示终端。 cerr“The average cannot be computed.\n”; 7.2.2 流类库 C++流类库是用继承方法建立起来的一个输入输出类库。它具有两个平行的基类:streambuf 类, ios 类。所有其它的流类都是从它们直接或间接地派生出来的。使用C++的流类库,程序中可能应包含的头文件: iostream.h strstream.h fstream.h iomanip.h 1. streambuf 类 2. ios 类 7.3输入输出的格式控制 7.3.1 用ios 类的成员函数进行格式控制 ios类中有几个成员函数可以用来对输入输出进行格式控制。 主要控制 状态标志字、域 宽、填充字符及输出精度。 1. 状态标志字 状态标志存放在数据成员 long x_flags 中。ios 类 public 中定义了一个枚举,它的每个成员可以分别定义状标志字的一个位,每一位都称为一个状标志位。 . 这个枚举 定义 如下: enum{ 0000 0000 0000 0001 skipws =0x0001,跳过输入中的空白,可用于输入 left =0x0002,左对齐输出,可用于输出 right =0x0004,右对齐输出,可用于输出 internal =0x0008,在符号位和基指示符后填入字符,可用于输出 dec =0x0010,转换基数为十进制,可用于输入或输出 oct =0x0020,转换基数为八进制,可用于输入或输出 hex =0x0040,转换基数为十六进制,可用于输入或输出 showbase =0x0080,在输出时显示基指示符,可于输入或输出 showpoint =0x0100,在输出时显示小数点,可用于输出 uppercase =0x0200,十六进制输出时,表示制式的和表示数值的字符一律为大写 ,可用于输出 showpos =0x0400,正整数前显示”+”符号,可用于输出 scientific =0x0800,用科学表示法显示浮点数,可用于输出 fixed =0x1000,用定点形式显示浮点数,可用于输出 unitbuf =0x2000,在输出操作后立即刷新所有流,可用于输出 stdio =0x4000,在输出操作后刷新stdout 和stderr,可用于输出 }; 2 x_flags取以上枚举值的并存,即x_flags上的每一位(长整数为16位)中的0 1相当于一个枚举值。例如 x_flags 中放 0x0011 或 17即为 0000 0000 000

文档评论(0)

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

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

1亿VIP精品文档

相关文档