第6章Wo流类库
第6章 I/O流类库
第6章O流类库 流类库及其结构 流的格式化控制 流的出错处理 令文件流操作
第6章 I/O流类库 ❖ 流类库及其结构 ❖ 流的格式化控制 ❖ 流的出错处理 ❖ 文件流操作
流类库及其结构 从文件到流 流类库结构 今定义流对象 流对象cin和cout的操作
流类库及其结构 ❖ 从文件到流 ❖ 流类库结构 ❖ 定义流对象 ❖ 流对象cin和cout的操作
从文件到流 令C语言是用文件系统作为程序与输入/输出设备间交 互的接口,所有的输入输出操作都抽象为对文件指 针的操作和直接对文件的读写 C++提供了更高抽象层次的输入隃出机制,它用流 ( Stream)作为程序的系统调用接口 流确定了数据的生产者与数据的消费者之间的联系 从流中获取数据,称为提取操作;把数据送入流中, 称为插入操作 令流包含了四层概念:流类库、流类、流对象和流类 成员
从文件到流 ❖ C语言是用文件系统作为程序与输入/输出设备间交 互的接口,所有的输入/输出操作都抽象为对文件指 针的操作和直接对文件的读写 ❖ C++提供了更高抽象层次的输入/输出机制,它用流 (Stream)作为程序的系统调用接口 ❖ 流确定了数据的生产者与数据的消费者之间的联系: 从流中获取数据,称为提取操作;把数据送入流中, 称为插入操作 ❖ 流包含了四层概念:流类库、流类、流对象和流类 成员
流类库结构 iostream init IOS lostreambuf Istream ostream iostream Ifstream fstream ofstream filebuf stream withess strstream ostream withess strstreambuf Ign Istrstream stdiostream ostrstream stdiostreamb
流类库结构 ios istream ostream iostream ifstream istream_withass ign istrstream filebuf strstreambuf stdiostreamb uf fstream strstream stdiostream iostreambuf ofstream ostream_withassi gn ostrstream Iostream_init
基本类 streambuf类:用以管理流的缓冲区 ios类:提供格式、错误检测和状态信息; · ostream类:用来创建输出流 istream类:用来创建输入流; 今 iostream类:用来创建输入/输出流
基本类 ❖ ·streambuf类:用以管理流的缓冲区 ❖ ·ios类:提供格式、错误检测和状态信息; ❖ ·ostream类:用来创建输出流; ❖ ·istream类:用来创建输入流; ❖ ·iostream类:用来创建输入/输出流
流类库中的类及其对应的头文件 头文件 名 流抽象类,IO在用户方的接口,提供基本O高层操作,包含一个指向 streambu的指针 streambuf 抽象流缓冲区类,IO在物理设备方的接口,具有缓冲区起始地址、读写指针、缓冲区读 写操作 Istream 通用输入流类,提供各种输入方式和提取操作——从缓冲区取字符 ostream 通用输出流类,提供各种输出方式和插入操作——向缓冲区存字符 tostream istream和 ostream的组合 istream withassig 标准输入流类 ostream wit hassign 标准输出流类 iostream initifstream预定义的流初始化类 fstreamh ifstream 输入文件流类 ofstream 输出文件流类 fstream 输入输出文件流类 filebuf 磁盘文件的流缓冲区类 trstrea h Istrstream 输入字符串流类 ostrstream 输出字符串流类 strstream 输入输出字符串流类 strstreambuf 字符串流缓冲区类 tdiostr h stdiostream 标准1O文件的输入输出类 tdiostreambuf 标准O文件的流缓冲区类
头 流类库中的类及其对应的头文件 文 件 类 名 含 义 iostream.h ios 流抽象类,I/O在用户方的接口,提供基本I/O高层操作,包含一个指向streambuf的指针 streambuf 抽象流缓冲区类,I/O在物理设备方的接口,具有缓冲区起始地址、读写指针、缓冲区读 写操作: istream 通用输入流类,提供各种输入方式和提取操作——从缓冲区取字符 ostream 通用输出流类,提供各种输出方式和插入操作——向缓冲区存字符 iostream istream和ostream的组合 istream_withassign 标准输入流类 ostream_withassign 标准输出流类 iostream_initifstream 预定义的流初始化类 fstream.h ifstream 输入文件流类 ofstream 输出文件流类 fstream 输入/输出文件流类 filebuf 磁盘文件的流缓冲区类 strstrea.h istrstream 输入字符串流类 ostrstream 输出字符串流类 strstream 输入/输出字符串流类 strstreambuf 字符串流缓冲区类 stdiostr.h stdiostream 标准I/O文件的输入/输出类 stdiostreambuf 标准I/O文件的流缓冲区类
定义流对象 在 ostream. h文件中,把4个预定义的开放流声明为 withassign类的对象: extern istream withassign cin %o extern ostream withassign cout 4 extern ostream withassign cerr; 6. extern ostream withassign clog 冷·cin是 istream-withassign类的对象,称为标准输入流,缺省 时键盘为数据源,也可以重定向为其他设备 冷·cout是 ostream- withassign类的对象,称为标准输出流,缺 省时显示器为数据池,也可以重定向为其他设备; ,cer和cog是 ostream-withassign类的对象,称为标准错误 输出流,固定关联到显示器
定义流对象 ❖ 在iostream.h文件中,把4个预定义的开放流声明为 withassign类的对象: ❖ extern istream_withassign cin; ❖ extern ostream_withassign cout; ❖ extern ostream_withassign cerr; ❖ extern ostream_withassign clog; ❖ · cin是istream-withassign类的对象,称为标准输入流,缺省 时键盘为数据源,也可以重定向为其他设备; ❖ · cout是ostream-withassign类的对象,称为标准输出流,缺 省时显示器为数据池,也可以重定向为其他设备; ❖ · cerr和clog是ostream-withassign类的对象,称为标准错误 输出流,固定关联到显示器
流对象cin和cout的操作 流对象cin和cout的操作主要由定义它们的类 istream和 ostrea的成员函数决定。了解了 这两个类定义的成员函数,就会知道流对象 cin和cou可以进行的主要操作
流对象cin和cout的操作 ❖ 流对象cin和cout的操作主要由定义它们的类 istream和ostream的成员函数决定。了解了 这两个类定义的成员函数,就会知道流对象 cin和cout可以进行的主要操作
类 istream的定义 1)提取运算符“>>”定义在 Istream类中,并 且对所有的预定义类型都给出了其重载定义 2)对于 istream类中定义的其他成员函数 流对象可以使用分量运算符引用,即采用格 式 cin.成员函数名()
类istream的定义 ❖ 1)提取运算符“>>”定义在istream类中,并 且对所有的预定义类型都给出了其重载定义 ❖ 2)对于istream类中定义的其他成员函数, 流对象可以使用分量运算符引用,即采用格 式: cin . 成员函数名()