- 1、本文档共75页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C面向对象程序设计第11章流要点
C++面向对象程序设计 第十一章 流 学习目标 ⑴理解流的概念,了解I/O流类的层次结构 ⑵掌握标准输入输出的使用方法 ⑶掌握格式化输入输出 ⑷掌握文件流操作 C++语言为了实现I/O操作,在标准库里包含了一个I/O流类库。通过流类使得C++比C语言的输入输出函数具有更大的优越性,C++的I/O流更简单、方便而且安全,并具有完整性、有效性等特点。 C++的I/O是以字节的方式实现的。流实际上就是字节序列的流动。流在使用前要建立,使用后要删除。如果数据的传递是在设备之间进行,这种流就称为I/O流。C++专门内置了一些供用户使用的类,在这些类中封装了可以实现输入输出操作的函数,这些类统称为I/O流类。流总是与某一设备相联系的,如键盘、屏幕、磁盘等,它具有方向性,在输入操作中,字节从输入设备流向内存,即与输入设备(如键盘)相联系的流称为输入流。这种操作可以理解为从一个流?抽取信息,故称为抽取操作。在输出操作中,字符从内存流向输出设备,即与输出设备(如终端屏幕)相联系的流称为输出流。这种操作可以理解为信息被插入到一个流中,故称为插入操作。 11.1 C的标准I/O函数的缺陷 在C语言中提供两个标准I/O函数,即printf()和scanf()。这两个函数的格式分别是: printf(格式控制字符串,输出变量1,输出变量2,……); scanf(格式控制字符串,输入变量1的地址,输入变量2的地址,……); 使用时容易发生与格式控制字符串不匹配的现象。这两个函数都使用格式控制字符串,在使用时都要求后面的变量个数和变量类型都要与前面字符串中给出的格式符的格式对应一致。但由于程序员的疏忽,这种不匹配时有发生,从而产生错误的结果,甚至使系统不能工作。由于格式符深藏在格式控制字符串中,编译系统无法像对一般函数那样,进行类型检查。这样的检查工作只好由程序员自己负责了。 其次,这两个I/O函数还不具有可扩充性。格式控制字符串中,所有控制符只适用于内部定义数据类型。但是,在C++的实际应用中,对于千变万化的类对象,而且大量的对象的I/O格式是未预先定义的。换句话说,C的I/O函数没有提供对用户定义对象的支持。因此C的I/O函数没有灵活和可扩充性,不能针对实际的类对象产生重载函数 例如 #include iostream.h class Student //学生类 { Student(……) //构造函数 { …… } …… //学生具有学号、姓名、年龄……等数据成员 }; void main() { Student s(……) //s是类Student的对象 scanf(″……″, s); //希望输入对象 s的数据,但格式控制字 //符串中要用什么格式符 printf(″……″, s) //希望打印对象s的数据,但格式控制字符串中要用什么格式符 } 为了克服上述缺陷,可以应用C++的I/O流类库。 11.2 I/O流的概念 在C++中,将数据从一个对象(源)到另一个对象(目的)的流动抽象为“流”(stream)。 一般地说,当输入时,所输入的信息是从键盘对应的缓冲区中流入正在运行的程序的缓冲区中,这些输入的信息称为输入流,该操作称为读操作。当程序输出信息时,信息就是从程序的缓冲区流到了显示器的缓冲区中,这些输出的信息称为输出流,该操作称为写操作。 C++的I/O操作是以字节方式实现的,流实际上就是一个字节序列。 上图中显示出计算机与输入输出设备之间的数据传输机制。从图中可以看出:流库往往在内存中开辟专用区域,用于输入、输出操作,这就是输入、输出缓冲区。开辟缓冲区是为了提高运行效率。如果对于每一个输入、输出数据都调用I/O操作程序,效率显然是很低的;有了缓冲区,输出数据首先存入输出缓冲区,当这个缓冲区存满数据时,才调用操作系统的输出程序一次,把数据全都送往外设。程序与缓冲区之间的数据传输(输入、输出流)是由I/O库来处理的;外设与缓冲区之间的数据传输是由设备驱动程序来处理的。 11.3 I/O流类库结构 C++的流类库是用派生方法建立起来的输入输出类库,是一个功能齐全的庞大类库。它有两个平行的基类streambuf和ios,其它的流类都是从这两个基类直接或间接派生的。 使用这些流类库时,必须包含相应的头文件。 ios类及其派生类为用户提供了使用流类的接口,它有4个直接派生类,即输入流(istream)、输出流(ostream)、串流(strstreambase)和文件流(fstreambase),它们是流类库中的基本流类,通过它们组合出了很多实用的流,如输入/输出流(iostream
您可能关注的文档
最近下载
- 2024首届全国红旗杯班组长大赛题库及答案(2)(2001-4000题).docx VIP
- 河南省漯河市郾城区2023-2024学年八年级上学期期末数学试题(含答案).doc
- 软件资格考试信息系统管理工程师(基础知识、应用技术)合卷(中级)试题与参考答案.docx VIP
- 东南大学《信号与系统》期末试卷及习题集合集_wrapper.pdf
- 2025年软件资格考试信息系统管理工程师(中级)(基础知识、应用技术)合卷试题及解答参考.docx VIP
- 南京邮电大学2021学年度第一学期《概率论与数理统计》期末考试试卷(A卷)及参考答案.docx
- 2024年上海市中考数学试题(含答案).docx VIP
- 信息系统管理工程师(基础知识、应用技术)合卷软件资格考试(中级)试题与参考答案(2025年).docx VIP
- 员工心态培训态度与能力积极的工作态度课件PPT.pptx VIP
- 王艳艳《工程招投标与合同管理》3第三章 工程项目投标2014.ppt VIP
文档评论(0)