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

第13讲 1. I/O流概念 2. 标准输出流 3. 标准输入流 1. I/O流概念 外部设备(I/O设备)可分为人机交互设备和存储设备两个大类。 人机交互设备主要指键盘、显示器等终端控制台设备和打印机。 存储设备指磁带、磁盘、光盘、U盘等以文件形式存储持久数据的设备。 从操作系统的角度看,每一个与主机相连的I/O设备都看成一个文件。 以文件方式统一管理I/O设备可以屏蔽实际物理设备的差异,有利于整体上简化程序设计语言与外部设备交换信息的处理过程。 程序的输入是指从输入文件将数据传送给程序。 程序的输出是指从程序将数据传送给输出文件。 输入与输出的三方面内容 标准I/O: 系统标准设备的输入与输出。即从键盘输入、由显示器输出。 文件I/O: 以外存文件为对象进行输入与输出。 串I/O: 对内存中指定的空间进行输入与输出。 C++的输入与输出 C++语言对输入输出的处理引入了“流”这个比文件抽象程度更高的概念。输入输出操作被看作数据在源设备对象与目标设备对象之间的流动。 C++的I/O流 C++的I/O流是由若干字节组成的字节序列,这些数据按顺序从一个对象流动到另一个对象。 系统开辟一个专用的内存区域用来临时存放输入/输出信息,称为缓冲区。I/O流可以是缓冲的,也可以是非缓冲的。引入缓冲的目的是为了提高系统的效率。通常情况使用缓冲流。 读操作在流数据抽象中被称为(从流中)提取。 写操作被称为(向流中)插入。 C++中的I/O流被定义为类,并形成了I/O流类库,用流类可以定义流对象。 C++中I/O流类继承层次 (1) 基础类ios是所有流类的根。它有四个直接派生类:istream、ostream、fstreambase和strstreambase,它们是流类库中的基本流类。 (2) istream和ostream是ios直接派生类,其功能是将数据格式化或非格式化数据与流缓冲区之间作转换处理。 (3) istream_withassign,ostream_withassign分别从istream和ostream类派生,并定义了cin,cout流,作标准输入和输出处理。 (4)而iostream是istream和ostream类的多继承派生类,用来操作文件流的标准输入/输出。 (5)ifstream是istream和fstreambase的多继承派生类,用于处理文件的输入。 (6)ofstream是ostream和fstreambase的多继承派生类,用于处理文件的输出。 (7)strstreambase类字符串流类基类,派生出istrstream、ostrstream和strstream类。 (8)istream_withassign类和ostream_withsaaign类用来实现标准输入输出功能 从键盘输入时用cin流,向显示器输出时用cout流,向显示器输出出错信息时用cerr和clog流。 流缓冲区类 在C++I/O类库定义文件iostream.h中有一个streambuf类,它用来提供物理设备的接口。缓冲区由一段预留的字符存储空间和两个指针组成,两个指针分别指向字符要被插入或被取出的位置。 streambuf类定义了一组缓冲或处理流的通用方法,诸如设置缓冲区,移动指针,存、取字符等。 streambuf类有三个派生类,其中: (1)conbuf在constream.h中定义,提供光标控制、清屏,定义活动窗口等控制台操作接口和I/O缓冲区管理功能。 (2)filebuf在fstream.h中定义,它用来维护文件缓冲区的打开,关闭,读、写,建立磁盘文件的内存代理。 (3)strstreambuf在strstream.h中定义,提供在内存进行提取和插入操作的缓冲区管理。 流缓冲区类的派生关系 2. 标准输出流 cout流对象 cerr流对象 clog流对象 cout流对象 cout流在内存中开辟了对应缓冲区用于存放流中的数据,当向cout流插入一个endl时,无论缓冲区是否已满,都立即输出流中所有数据,然后插入一个换行符,并刷新流(清空缓冲区)。如果插入一个换行符‘\n’,则只输出流中数据,但不清空缓冲区。 和用于用户自定义数据类型时,需要进行运算符重载。 cerr流对象 cerr流用法与cout流类似,但只能向显示器输出出错信息;而cout流还可重定向到磁盘文件。 clog流对象 clog流作用与cerr流相同,但cerr流没有缓冲区,clog流则有对应的缓冲区,当缓冲区满或遇到endl时向显示器输出。 格式输出 1.使用控制符控制输出格式 (需要包含头文件iomanip) 2.用流对象成员函数控制输出格式 使用控制符控制输出格式 用流对象成员函数控制输出格式 流成员函数put

文档评论(0)

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

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

1亿VIP精品文档

相关文档