资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C+大学基础教程,第12章 I/O流及输入输出 北京邮电大学电信工程学院 计算机技术中心,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-2-,C+语言没有输入/输出语句,但C+编译系统带有一个面向对象的输入/输出软件包,它就是I/O流类库。软件包有时称为库文件(.lib文件),类库是指用面向对象方法实现的软件包。,12.1 流类库概述 12.2 输出流 12.3 输入流 12.4 输入/输出流 12.5 重载插入和提取运算符,第12章 I/O流及输入输出,12.1 流类库概述,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-5-,第12章 流类库概述,C+语言没有输入/输出语句,但C+编译系统带有一个面向对象的输入/输出软件包,它就是I/O流类库。 在C+中,将数据从一个对象到另一个对象的流动抽象为“流”,这里的对象指程序或者“文件”。注意,输入输出是相对与程序而言的。,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-6-,在C+中,用面向对象的方法来实现流。为了实现流,定义了几种流类: ios是抽象流基类 ios的派生类istream是输入流基类 ios的派生类ostream是输出流基类 iostream是输入/输出流类,它由istream和ostream两个基类共同派生出来 输入流基类、输出流基类和输入/输出流类又各自派生出三个子类,第12章 流类库概述,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-7-,从程序的角度来看,可能需要从输入流中获取数据,称为提取操作,可能需要向输出流中添加数据,称为插入操作。 在I/O流类中定义了若干成员函数,其中有两个特殊的成员: 提取运算符: 插入运算符:,第12章 流类库概述,12.2 输出流,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-9-,系统已经定义了标准设备输出流类,并且已经定义了该类的对象: cout 标准输出,缓冲区满时被输出。 cerr 标准错误输出,没有缓冲,发送给它的内容立即被输出。 clog 类似于cerr,但是有缓冲,缓冲区满时被输出。 程序中只需#include ,可以直接使用这些对象,从键盘输入,向显示器输出。,1、设备输出流,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-10-,标准输出设备一般指显示器,但可以在操作系统下修改为别的设备,比如,重定向为磁盘文件。 流cerr和clog把信息输出到默认错误日志上,该日志通常是指显示器,不能重定向。,1、设备输出流,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-11-,可以使用操纵符或调用成员函数进行输出格式控制。,1、设备输出流,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-12-,ostream类的派生类ofstream类支持向磁盘文件输出。 如果程序需要把数据信息输出到磁盘文件,可以构造一个ofstream类的对象。 可以在定义流对象的同时,指定相关联的文件;也可以先定义流对象,随后调用open成员函数,指定相关联的文件并打开。,2、文件输出流,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-13-,在输出到文件时,同样可以使用操纵符,或使用与操纵符等价的成员函数进行格式控制。,2、文件输出流,12.3 输入流,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-15-,系统已经预先定义了标准设备输入流,并且已经定义了该类的对象cin。一般不需要构造新的设备输入流对象,只使用预先定义的cin对象。 从输入流提取时,也可以使用的操纵符进行输入格式的控制。 从输入流提取时,也可以使用流类定义的函数进行输入操作。,1、标准设备输入流,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-16-,文件输入流类ifstream,支持从磁盘文件读取。如果需要一个仅用于读取的磁盘文件,可以构造一个ifstream类的对象,并且可以指定使用二进制或文本模式。 可以在定义流对象的同时,指定相关联的文件,在构造该对象时自动打开文件;也可以先定义流对象,随后调用open成员函数,指定相关联的文件并打开。,2、文件输入流,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-17-,很多格式化选项和成员函数都可以应用于ifstream类对象,2、文件输入流,12.4 输入/输出流,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-19-,输入输出流类iostream,该类对象可以是数据的源或目的。 iostream类有一个重要的派生类:fstream,它支持磁盘文件的输入和输出,如果程序需要对同一个磁盘文件既要读又要写,可以构造一个fstream对象。,12.4 输入/输出流,12.5 重载插入和提取运算符,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-21-,12.5 重载插入和提取运算符,预定义的插入和提取运算符可以处理基本数据类型的输入输出问题,而用户自定义的类如果希望使用插入运算符执行输出,把类的信息插入到一个输出流ostream中,就需要在类中重载插入运算符,提取运算符也一样。 重载插入和提取运算符的特性使得I/O流可扩展。,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-22-,重载的运算符形式如下: istream 注意:不能将重载的插入和提取运算符定义为类的成员函数,只能定义为一般的函数或者类的友元函数。,12.5 重载插入和提取运算符,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-23-,作业,2019/5/24,北京邮电大学电信工程学院计算机技术中心,-24-,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号