- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C为何有自己IO系统
第六章 流 库 6.1 C++为何有自己的I/O系统 一、C的I/O 1、不包含预定义的输入和输出函数;通过外部库实现。 如:stdio iostream 2、特点 优点:灵活性大、功能强 缺点:不提供用户定义对象的支持 例: struct my_struct { int count; char s[80]; double balance; }cust; 6.2 C++流库结构 一、定义 C++流库(stream library)是用继承方法建立起来的一个输入输出类库,包含有两个平行基类:streambuf类、ios类,在iostream.h中定义。所有流类均以两者之间作为其基类。 6.3 输入和输出 6.3.1 istream 一、istream提供主要的输入操作,是用户使用流库的主要界面之一。 二、istream的简要介绍 1、重载了6个get函数 2、getline:与get功能相同,只是分界符也读入 3、read:输入给定数据的字符到数组 4、辅助操作: 5、随机移动文件指针 6.4 格式控制 C++中可以用C的printf和scanf进行格式化I/O(缺点在哪里?)。 又提供了两种进行格式控制的方法 1、使用ios类有关格式控制的成员函数; 2、使用操纵符(manipulator)的特殊类型函数。 6.5 文件I/O 文件的读出过程可以分解为三个抽象的概念: 往流中加入一个字符; 从流中取出一个字符; 一旦建立一个流,把它与文件相关连以便用来读写。 因此,C++和C对文件处理的不同:把文件看为流,要进行文件操作,先要建立流,然后将文件与流相关联(打开文件),然后进行读写,读写完成后,关闭文件。 * * 想用printf实现输出: printf(“%my_struct”,cust); 是不能实现的。 printf只能识别预定义类型,不能将功能延伸到新的数据类型。 C++的改进: 1、与原C的输入输出函数有重复; 2、进行重载,使标准的输入输出运算符能处理用户定义类型,扩充了功能; 3、采用继承的方法建立实用的流库,功能更强大、方便,并便于扩充。 1、streambuf:负责缓冲区处理 字符序列 输入缓冲区指针 输出缓冲区指针 (1)提供对缓冲区的低级操作, 如:对缓冲区指针进行操作、从缓冲区取字符、向缓冲区存储字符等。 (2)主要是作为流库的其它部分使用的基类 Streambuf:负责缓冲区处理 filebuf strstreambuf conbuf 使用文件来保存字符序列。 扩展了基类的文件处理能力。 使用串来保存字符序列。 扩展了基类在内存中提取和插入操作的缓冲区管理。 提供光标控制、设置颜色、定义活动窗口、清屏、清一行等成员函数,为输出操作提供缓冲区管理。 (Borland C++3.0) (3)streambuf的派生类,与基类不同在于对输入缓冲区指针和输出缓冲区指针的处理方法,并根据各自的用途扩充了特殊的操作。 (4)存在于几个.h文件中。 (5)使用:一般应使用streambuf的派生类。 2、ios类及其派生类:提供用户使用流类的接口 (1)提供输入和输出所需要的公共操作。 (2) 一个指向streambuf的指针 格式化标志:format flags io_state:对I/O错误进行处理 (3)相关流:相互关联的流,其中之一被使用时,其它流也受影响。 如:cin, cout ios:用户使用流类的接口 istream ostream fstreambase strstreambase 提供对streambuf进行插入时的格式化或非格式化转换,并对所有系统预定义的类型重载输入运算符“>>”; 提供了流的大部分输入操作。 提供对streambuf的格式化或非格式化输出,对于预定义类型,重载了输出运算符:“<<”; 提供了流主要的输出操作。 提供文件流的公共操作,如:文件打开、关闭、连到打开文件的文件描述字、返回所用的缓冲冲以及使用指定的缓冲区等。 专门处理字符串流。 (4)ios直接派生的层次上,定义了输入流、输出流、文件流、串流的基本操作。以此四种流类为基础流类,可以组合出多种实用的流: 如:输入/输出流、输入/输出文件流、输入/输出串流、 屏幕输出流、输入文件流、输出文件流、输入串流和输出 串流。 3、C++的几个预定义流: cin:与标准输入设备相关的流; cout: 与标准输出设备相关的流; cerr和clog: 与标准错误输出设备相关的流;(cerr没有被缓冲,发给它的任何内容立即输出) 6.3.2 ostream 一、ostream提供主要的输出操作,是用户使用流库的主要界面之一。 二、ostr
文档评论(0)