C为何有自己的IO系统

C为何有自己的IO系统

ID:36491826

大小:284.41 KB

页数:22页

时间:2019-05-09

C为何有自己的IO系统_第1页
C为何有自己的IO系统_第2页
C为何有自己的IO系统_第3页
C为何有自己的IO系统_第4页
C为何有自己的IO系统_第5页
资源描述:

《C为何有自己的IO系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章 流 库6.1C++为何有自己的I/O系统一、C的I/O1、不包含预定义的输入和输出函数;通过外部库实现。如:stdioiostream2、特点优点:灵活性大、功能强缺点:不提供用户定义对象的支持例:structmy_struct{intcount;chars[80];doublebalance;}cust;想用printf实现输出:printf(“%my_struct”,cust);是不能实现的。printf只能识别预定义类型,不能将功能延伸到新的数据类型。C++的改进:1、与原C的输入输出函数有重复;2、进行重载,使标准的输入输出运算符能处理用户定义类型,扩充了功能;3、采用继承的

2、方法建立实用的流库,功能更强大、方便,并便于扩充。6.2C++流库结构一、定义C++流库(streamlibrary)是用继承方法建立起来的一个输入输出类库,包含有两个平行基类:streambuf类、ios类,在iostream.h中定义。所有流类均以两者之间作为其基类。1、streambuf:负责缓冲区处理字符序列输入缓冲区指针输出缓冲区指针(1)提供对缓冲区的低级操作,如:对缓冲区指针进行操作、从缓冲区取字符、向缓冲区存储字符等。(2)主要是作为流库的其它部分使用的基类Streambuf:负责缓冲区处理filebufstrstreambufconbuf使用文件来保存字符序列。扩展了基类的

3、文件处理能力。使用串来保存字符序列。扩展了基类在内存中提取和插入操作的缓冲区管理。提供光标控制、设置颜色、定义活动窗口、清屏、清一行等成员函数,为输出操作提供缓冲区管理。(BorlandC++3.0)(3)streambuf的派生类,与基类不同在于对输入缓冲区指针和输出缓冲区指针的处理方法,并根据各自的用途扩充了特殊的操作。(4)存在于几个.h文件中。(5)使用:一般应使用streambuf的派生类。2、ios类及其派生类:提供用户使用流类的接口(1)提供输入和输出所需要的公共操作。(2)一个指向streambuf的指针格式化标志:formatflagsio_state:对I/O错误进行处理

4、(3)相关流:相互关联的流,其中之一被使用时,其它流也受影响。如:cin,coutios:用户使用流类的接口istreamostreamfstreambasestrstreambase提供对streambuf进行插入时的格式化或非格式化转换,并对所有系统预定义的类型重载输入运算符“>>”;提供了流的大部分输入操作。提供对streambuf的格式化或非格式化输出,对于预定义类型,重载了输出运算符:“<<”;提供了流主要的输出操作。提供文件流的公共操作,如:文件打开、关闭、连到打开文件的文件描述字、返回所用的缓冲冲以及使用指定的缓冲区等。专门处理字符串流。(4)ios直接派生的层次上,定义了输入

5、流、输出流、文件流、串流的基本操作。以此四种流类为基础流类,可以组合出多种实用的流:如:输入/输出流、输入/输出文件流、输入/输出串流、屏幕输出流、输入文件流、输出文件流、输入串流和输出 串流。3、C++的几个预定义流:cin:与标准输入设备相关的流;cout:与标准输出设备相关的流;cerr和clog:与标准错误输出设备相关的流;(cerr没有被缓冲,发给它的任何内容立即输出)6.3输入和输出6.3.1istream一、istream提供主要的输入操作,是用户使用流库的主要界面之一。二、istream的简要介绍1、重载了6个get函数2、getline:与get功能相同,只是分界符也读入3

6、、read:输入给定数据的字符到数组4、辅助操作:5、随机移动文件指针6.3.2ostream一、ostream提供主要的输出操作,是用户使用流库的主要界面之一。二、ostream的简要介绍1、输出操作2、随机移动文件指针6.3.3输出运算符“<<”一、又称为插入运算符,包含两个操作数:1、左操作数:ostream类类型的对象;2、右操作数:一个预定义类型的变量,也可为重载了该运算符的类的对象。3、可以识别预定义类型,也可以识别重载后的类的对象。二、运算:1、采用左结合的方式2、重载并不改变运算符的优先级。三、实例6-16.3.3输出运算符“>>”一、又称为提取运算符,包含两个操作数:1、左

7、操作数:istream类类型的对象;2、右操作数:一个预定义类型的变量,也可为重载了该运算符的类的对象。3、可以识别预定义类型,也可以识别重载后的类的对象。二、运算:1、采用左结合的方式2、输入语句将跳过空白,从标准输入读取数字。三、实例6-2四、”>>”的重载:第二个参数必须是一个引用,目的在于obj的值能在函数外被修改。6.4格式控制C++中可以用C的printf和scanf进行格式化I/O(缺点在哪里?

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。