C程序设计《输入输出流》.ppt
《C程序设计《输入输出流》.ppt》由会员分享,可在线阅读,更多相关《C程序设计《输入输出流》.ppt(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类,负责对文件进行插入和提取操作。,ios
5、tream类库中不同的类的声明被放在不同的头文件中,见课本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 _wit
6、hassign,ostream_withassign,iostream_withassign等。,iostream头文件包含了对输入输出流进行操作所需的基本信息。因此大多数C+程序都包括iostream头文件。在iostream头文件中不仅定义了有关的类,还定义了4种流对象,供用户使用,它们是:cin:是istream的派生类istream_withassign的对象,它是从标准输入设备(键盘)输入到内存的数据流,称为cin流或标准输入流。cout:是ostream的派生类ostream_withassign的对象,它是从内存输入到标准输出设备(显示器)的数据流,称为cout流或标准输出流。c
7、err和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+系统将co
8、ut中的内容输出到显示屏幕上。在C+的头文件iostream中,定义了一个代表回车换行的控制符endl,其作用与“n”相同。如下列三个输出语句是等价的:coutC+Programn;coutC+Program n;coutC+Programendl;,而且需要注意的是:系统已经对“”运算符用于标准类型数据的输入输出进行了重载,但未对用户自定义类型数据的输入输出进行重载。在用cout进行输出时,每输出一项都要用一个“”运算符。例如:输出语句:couta=a,b=bendl;不能写成:couta=,a,b=,bendl;,(2)cerr流对象cerr流对象是标准出错流,它的作用是向输出设备输出出错
9、信息。cerr与标准输出流cout的作用和用法类似。但不同的是:cout流通常是传送到显示器输出,但也可以被重定向输出到磁盘文件,而cerr流中的信息只能在显示器输出。当调试程序时,如果不希望程序运行时的出错信息被送到其他文件,这时应该用cerr。例题见课本294页【例9-1】,(3)clog流对象clog流对象也是标准出错流,它的作用和cerr相同,都是在终端显示器上显示出错信息。只不过cerr是不经过缓冲区,直接向显示器上输出有关信息,而clog中的信息存放在缓冲区中,缓冲区满后或遇endl时才向显示器输出。,2用流成员函数put()输出字符ostream类的成员函数put()提供了一种将
10、单个字符送进输出流的方法。其使用方法如下:char a=m;cout.put(a);/会输出显示字符mcout.put(m);/会输出和上一句相同的结果另外,put()函数的参数还可以是字符的ASCII代码或者一个整型表达式。如:cout.put(65+32);也显示字符a,因为97是字符a的ASCII代码。,我们可以在一个语句中连续调用put()函数。如:cout.put(71).put(79).put(79).put(68).put(n);在屏幕上显示GOOD。还可以用putchar()函数输出一个字符。putchar()函数是C语言中使用的,在stdio.h头文件中定义。C+保留了这个函
11、数,在iostream头文件中定义。,3用流成员函数write()输出字符ostream类的成员函数write()是一种将字符串送到输出流的方法。其使用格式为:cout.write(const char*str,int n);其中,str是一个字符指针或字符数组,用来存放一个字符串,n是一个整型数,用来表示输出显示字符串中字符的个数。如果显示整个字符串,则取strlen(str)。第一个参数也可以直接给出一个字符串常量。例如输出字符串常量“C+program”,可以这样实现:cout.write(C+program,strlen(C+program);例题见课本295页【例9-2】。,9.2.
12、3 C+的标准输入流标准输入流是从标准输入设备(键盘)流向内存的数据。1cin流cin输入流是最一般的键盘输入,其使用格式如下:cin表达式1表达式2.在上式中,流提取运算符“”可以连续写多个,每个后面跟一个表达式,表达式通常是获得输入值的变量或对象。例题见课本296页【例9-3】。,2用成员函数get()获取一个字符除了可以用cin输入标准类型的数据外,还可以用istream类的成员函数get()从输入流中获取一个字符,并把它放置到变量中。该函数的使用格式有2种形式:无参数的,有一个参数的。(1)无参数的get()函数其调用形式为:cin.get()其作用是从指定的输入流中提取一个字符,函数
13、的返回值就是读入的字符。若遇到输入流中的文件结束符,则函数值返回文件结束标志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型
14、数,用来限制从输入流中读取到buf字符数组中的字符个数,最多只能读Limit-1个,因为要留出最后一个位置存放结束符。Deline是读取字符时指定的结束符,其默认值为“n”,终止字符也可以用其他字符,如cin.get(ch,10,x)。该函数的作用是从输入流中读取Limit-1个字符,赋给指定的字符数组(或字符指针指向的数组),如果在读取Limit-1个字符之前遇到指定的终止字符,则提前结束读取。如果读取成功则函数返回非0值(真),如失败(遇文件结束符)则函数返回0值(假)。再将【例9-5】改写例题见课本299页:,3用成员函数getline()函数读入一行字符getline()函数的作用是从
15、输入流中读取一行字符,其用法与上面讲述的利用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类的其他成员函数除了以上介绍的用于
16、读取数据的成员函数外,istream类还有其他在输入数据时用得着的一些成员函数。常用的有以下几种:(1)eof()函数eof是end of file的缩写,表示“文件结束”。从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值(表示真),否则为0(假)。其调用格式为:cin.eof();课本301页【例9-7】逐个读入一行字符,将其中的非空格字符输出。,(2)peek()函数peek()函数的作用是从输入流中返回下一个字符,但它只是观测,指针仍停留在当前位置,遇到流结束标志时返回EOF。其调用形式为:c=cin.peek();课本301页【例9-8】编制程序,检测字符1后面
17、是字符2的连续字符组的个数。,(3)putback()函数其调用形式为:cin.putback(ch);其作用是将前面用get()或getline()函数从输入流中读取的字符ch返回到输入流,插入到当前指针位置,以供后面读取。课本302页【例9-9】putback()函数的用法。,(4)ignore()函数ignore()函数的作用是跳过输入流中n个字符,或在遇到指定的终止字符时提前结束(此时跳过包括终止字符在内的若干字符)。其调用形式为:cin.ignore(int n=1,char/跳过输入流中5个字符,遇A后就不再跳了课本303页【例9-10】用ignore()函数跳过输入流中的字符。,
18、以上介绍的各个成员函数,不仅可以用cin流对象来调用,而且也可以用istream类的其他流对象来进行调用。,9.3 输入运算符和输出运算符及其重载,9.3.1 输入运算符输入运算符“”也称为流提取运算符,它是一个二目运算符,有两个操作数,左操作数是istream类的一个对象,右操作数既可以是一个预定义的变量,也可以是重载了该运算符的类对象。因此,输入运算符不仅能够识别预定义类型的变量,如果某个类中重载了这个运算符,它也能识别这个类的对象。在使用输入运算符时需要注意以下几点:(1)在默认情况下,运算符“”跳过空白符,然后读入与输入变量类型相对应的值。因此,给一组变量输入值时可以用空格或换行符把输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 输入输出流 程序设计 输入输出
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6503609.html