C++程序设计《输入输出流》

上传人:野鹰 文档编号:2906343 上传时间:2017-07-28 格式:PPT 页数:57 大小:914.50KB
返回 下载 相关 举报
C++程序设计《输入输出流》_第1页
第1页 / 共57页
C++程序设计《输入输出流》_第2页
第2页 / 共57页
C++程序设计《输入输出流》_第3页
第3页 / 共57页
C++程序设计《输入输出流》_第4页
第4页 / 共57页
C++程序设计《输入输出流》_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《C++程序设计《输入输出流》》由会员分享,可在线阅读,更多相关《C++程序设计《输入输出流》(57页珍藏版)》请在金锄头文库上搜索。

1、C+程序设计,输入输出流,第9章输入输出流,本章学习要点,完成程序的基本功能需要有初始数据的输入和运行结果的输出. 本章重点介绍C+输入/输出流库、预定义类型数据的输入和输出、格式控制、自定义类型数据的输入和输出以及文件的输入和输出等内容。,9.1 C+的输入和输出概述9.2 C+的标准输入/输出流9.3 输入运算符和输出运算符及其重载9.4 C+格式输入和输出9.5 文件操作与文件流9.6 学生信息管理系统中的文件操作,第9章输入输出流,9.1 C+的输入和输出概述,1iostream类库中有关的类C+除保留C语言的输入输出系统之外,还利用继承的机制创建出一套自己的方便、一致、安全、可扩充的

2、输入输出系统,这套输入输出系统就是C+的输入/输出(I/O)流库。 C+自有的输入输出通过编译系统对数据类型进行严格的检查,凡是类型不正确的数据都不可能通过编译。而且C+的I/O操作是可扩展的,不仅可以用来输入输出标准类型的数据,也可以用于用户自定义类型的数据。C+对标准类型的数据和对用户自定义类型的数据的输入/输出,采用同样的方法处理。C+通过I/O流类库来实现丰富的I/O功能。C+的输入输出优于C语言中的printf()和scanf(),但是相对来说比较复杂,要掌握许多细节。,9.2 C+的标准输入/输出流,C+的输入输出流是指由若干字节组成的字节序列,这些字节中的数据按顺序从一个对象传送

3、到另一对象。在输入操作时,字节流从输入设备(如键盘、磁盘)流向内存,在输出操作时,字节流从内存流向输出设备(如屏幕、打印机、磁盘等)。流中的内容可以是ASCII字符、二进制形式的数据、图形图像、数字音频视频或其他形式的信息。,C+的I/O流库中的类称为流类。用流类定义的对象称为流对象。前面曾提到:cout和cin并不是C+语言中提供的语句,它们是I/O流类的对象。在未学习类和对象时,在不致引起误解的前提下,为叙述方便,把它们称为cout语句和cin语句。在学习了类和对象后,我们对C+的输入输出应当有更深刻的认识。,9.2.1 iostream类库中有关的类及其定义的流对象C+编译系统提供了用于

4、输入输出的iostream类库。在iostream类库中包含许多用于输入输出的类。这些类的继承层次结构如课本291页图9-1所示。,为了实现C+对文件的操作,C+的iostream类库中派生定义了用于文件操作的类,它们分别是如下几个类:fstreambase类:这是一个公共基类,文件操作中不直接使用这个类。ifstream类:派生自fstreambase类和istream类,负责对文件进行提取操作。ofstream类:派生自fstreambase类和ostream类,负责对文件进行插入操作。fstream类:派生自fstreambase类和iostream类,负责对文件进行插入和提取操作。,i

5、ostream类库中不同的类的声明被放在不同的头文件中,见课本292页表9-1。用户在程序中用#include命令包含了有关的头文件就相当于在本程序中声明了所需要用到的类。我们编程时常用的头文件有:iostream:包含了对输入输出流进行操作所需的基本信息。fstream:用于用户管理的文件的I/O操作。strstream:用于字符串的I/O。stdiostream:用于混合使用C和C+的I/O机制时。iomanip:用于格式化I/O时。,2在iostream头文件中定义的流对象在iostream头文件中定义的类有:ios,istream,ostream,iostream,istream _w

6、ithassign, ostream_withassign,iostream_withassign等。,iostream头文件包含了对输入输出流进行操作所需的基本信息。因此大多数C+程序都包括iostream头文件。在iostream头文件中不仅定义了有关的类,还定义了4种流对象,供用户使用,它们是:cin:是istream的派生类istream_withassign的对象,它是从标准输入设备(键盘)输入到内存的数据流,称为cin流或标准输入流。cout:是ostream的派生类ostream_withassign的对象,它是从内存输入到标准输出设备(显示器) 的数据流,称为cout流或标准输

7、出流。cerr和clog:作用相似,均为向输出设备(显示器)输出出错信息。它们的区别是cerr提供不带缓冲区的输出,clog提供带缓冲区的输出。从键盘输入时用cin流,向显示器输出时用cout流。向显示器输出出错信息时用cerr或clog流。,9.2.2 C+的标准输出流标准输出流是流向标准输出设备(显示器)的数据。ostream类定义了3个输出流对象,即cout,cerr,clog。1cout,cerr和clog流(1)cout流对象cout必须和运算符一起使用。用cout进行输出的一般形式为:cout输出项1输出项2.;它的功能是将输出项1,输出项2,.插入到输出流cout中,然后由C+系

8、统将cout中的内容输出到显示屏幕上。在C+的头文件iostream中,定义了一个代表回车换行的控制符endl,其作用与“n”相同。如下列三个输出语句是等价的:coutC+ Programn;coutC+ Program n;coutC+ Programendl;,而且需要注意的是: 系统已经对“”运算符作了重载函数,因此用“cout”输出基本类型的数据时,可以不必考虑数据是什么类型。 在iostream头文件中只对“”运算符用于标准类型数据的输入输出进行了重载,但未对用户自定义类型数据的输入输出进行重载。 在用cout进行输出时,每输出一项都要用一个“”运算符。例如:输出语句:couta=a

9、,b=bendl; 不能写成: couta=, a, , b=, b表达式1表达式2.在上式中,流提取运算符“”可以连续写多个,每个后面跟一个表达式,表达式通常是获得输入值的变量或对象。例题见课本296页【例9-3 】 。,2用成员函数get()获取一个字符除了可以用cin输入标准类型的数据外,还可以用istream类的成员函数get()从输入流中获取一个字符,并把它放置到变量中。该函数的使用格式有2种形式:无参数的,有一个参数的。(1)无参数的get()函数其调用形式为:cin.get()其作用是从指定的输入流中提取一个字符,函数的返回值就是读入的字符。若遇到输入流中的文件结束符,则函数值返

10、回文件结束标志EOF(一般情况下认为是-1),例题见课本297页【例9-4】 :,(2)有一个参数的get()函数其调用形式为:cin.get(char &ch)其作用是从输入流中读取一个字符,赋给字符变量ch。如果读取成功则函数返回非0值(真),如失败(遇文件结束符) 则函数返回0值(假)。【例9-4】可以改写为课本298页的【例9-5】。,使用get()函数还可以输入一行字符。其调用形式为:cin.get(char *buf, int Limit, Deline=n);这里,*buf可以是一个字符数组或一个字符指针。Limit是一个int型数,用来限制从输入流中读取到buf字符数组中的字符

11、个数,最多只能读Limit-1个,因为要留出最后一个位置存放结束符。Deline是读取字符时指定的结束符,其默认值为“n”, 终止字符也可以用其他字符,如cin.get(ch, 10, x)。该函数的作用是从输入流中读取Limit-1个字符,赋给指定的字符数组 (或字符指针指向的数组),如果在读取Limit-1个字符之前遇到指定的终止字符,则提前结束读取。如果读取成功则函数返回非0值(真),如失败(遇文件结束符) 则函数返回0值(假)。再将【例9-5】改写例题见课本299页:,3用成员函数getline()函数读入一行字符getline()函数的作用是从输入流中读取一行字符,其用法与上面讲述的

12、利用get()函数输入一行字符的功能类似。即cin.getline(char *buf,int Limit,Deline=n);,4用成员函数read()读取一串字符使用成员函数read()可以从输入流中读取指定数目的字符并将它们存放在指定的数组中。该函数使用格式如下:cin.read(char *buf,int size);其中,buf是用来存放读取来的字符的字符指针或者是字符数组,size是一个int型数,用来指定从输入流中读取字符的个数。课本300页【例9-6】利用read()函数读入字符串,并输出。,5istream类的其他成员函数除了以上介绍的用于读取数据的成员函数外,istream类还有其他在输入数据时用得着的一些成员函数。常用的有以下几种:(1)eof()函数eof是end of file的缩写,表示“文件结束”。从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值(表示真),否则为0(假)。其调用格式为:cin.eof();课本301页【例9-7】逐个读入一行字符,将其中的非空格字符输出。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号