第七章C+的I/0流类 库
第七章 C++的I/O流类 库
71C++为何建立自己的输入输出系统 C++除了完全支持C语言的输入输出系统外,还定义了一套面向对 象的输入输出系统。为什么C++还要建立自己的输入输出系统呢 C语言的输入输出系统不支持用户自定义的对象,如: Struct my_ struct int i. float f char“str; 对此结构类型,在C语言中下面的语句是不能接受的: printf("/my_ struct",s); 因为 printf(函数只能识别系统预定义的类型,而没有办法对新 的数据类型进行扩充,。用C++的输入输出系统,就可以通过重载 “<<”和“>>”运算符来解以上问题。C++的类机制允它建立 个可扩展的输入输出系统,它可以通过修改和扩展来加入用户自 定义类型及相应操作
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++的类机制允它建立一 个可扩展的输入输出系统,它可以通过修改和扩展来加入用户自 定义类型及相应操作。 1
C++的流及流类库 7.21c++的流 输入输出是一种数据传递操作,它可以看作字符序列在主机与外 部介质之间的流动。流( stream为从源(或生产者到目的(或消 费者)的数据流的引用。流具有方向性:与输入设备(如键盘)相 联系的流称为输入流;与输出设备(如屏幕)相联系的流称为输出 流;与输入输出设备(如磁盘)相联系的流称为输入输出流。 C++中包含几个预定义的流: 标准输入流 cin与标准输入设备相关联 标准输出流 cout与标准输出设备相关联 非缓冲型标准出错流cerr与标准错误输出设备相关联(非缓冲方式) 缓冲型的标准出错流clog与标准错误输出设备相关联(缓冲方式) 在缺省情况下,指定的标准输出设备是显示终端,标准输入设备 是键盘。 在任何情况下(有时用户把标准输出设备定向为其它设备),指 定的标准错误输出设备总是显示终端。 cerr<<The average cannot be computed. In
7.2 C++的流及流类库 7.2.1 C++的流 输入输出是一种数据传递操作,它可以看作字符序列在主机与外 部介质 之间的流动。流(stream)为从源(或生产者)到目的(或消 费者)的数据流的引用。流具有方向性: 与输入设备(如键盘)相 联系的流称为输入流;与输出设备(如屏幕)相联系的流称为输出 流;与输入输出设备(如磁盘)相联系的流称为输入输出流。 C++中包 含几个预定义的流: 标准输入流 cin 与标准输入设备相关联 标准输出流 cout 与标准输出设备相关联 非缓冲型标准出错流 cerr 与标准错误输出设备相关联(非缓冲方式) 缓冲型的标准出错流 clog 与标准错误输出设备相关联(缓冲方式) 在缺省情况下,指定的标准输出设备是显示终端,标准输入设备 是键盘。 在任何情况下(有时用户把标准输出设备定向为其它设备),指 定的标准错误输出设备总是显示终端。 cerr<<“The average cannot be computed.\n”; 2
722流类库 C+流类库是用继承方法建立起来的一个输入输出类库。它具有 两个平行的基类: streambuf类,ios类。所有其它的流类都是 从它们直接或间接地派生出来的。使用C++的流类库,程序中可 能应包含的头文件: iostream.h strstream h fstream h iomanip. h 1. streambuf类 streambuf 派生 filebuf strstreambuf conbuf
7.2.2 流类库 C++流类库是用继承方法建立起来的一个输入输出类库。它具有 两个平行的基类:streambuf 类, ios 类。所有其它的流类都是 从它们直接或间接地派生出来的。使用C++的流类库,程序中可 能应包含的头文件: iostream.h strstream.h fstream.h iomanip.h 1. streambuf 类 streambuf filebuf strstreambuf conbuf 派生 3
2.ios类 stream fstreambase strstreambase+ ostream ifstream istrstream ofstream bstrstreamconstream istream withassign fstreamstrstream bstream withassign iostream iostream withassign
2. ios 类 ios istream fstreambase strstreambase ostream ifstream istrstream ofstream ostrstream constream istream_withassign fstream ostream_withassign iostream_withassign strstream iostream 4