21天学通C++-第十四章-输入输出流

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

联系方式:北京源智天下科技有限公司第十四讲:输入输出流杨章伟e-mail:jtclass@163.com1-2北京源智天下科技有限公司联系方式:课程内容安排•输入输出流的引入•标准输入输出流•输入输出流成员函数•输入输出的格式控制•用户自定义数据类型的输入输出•综合练习•思考和习题1-3北京源智天下科技有限公司联系方式:输入输出流的引入•如果一个应用程序没有输入和输出,那它也就没有应用价值。在C++中,输入输出功能是通过调用该操作系统的I/O库来实现的。•C++完全支持C的输入输出系统,但由于C的输入输出系统不支持类和对象,所以C++又提供了自己的输入输出系统,并通过重载运算符“”和“”来支持类和对象的输入输出。C++的输入输出系统是以字节流的形式实现的。1-4北京源智天下科技有限公司联系方式:输入输出流简介•C++中的流是指数据从一个对象传递到另一个对象的操作。从流中读取数据称为提取操作,向流内添加数据称为插入操作。流在使用前要建立,使用后要删除。如果数据的传递是在设备之间进行,这种流就称为I/O流。C++专门内置了一些供用户使用的类,在这些类中封装了可以实现输入输出操作的函数,这些类统称为I/O流类。•此外,流具有方向性:与输入设备相联系的流称为输入流,与输出设备相联系的流称为输出流,与输入输出设备相联系的流称为输入输出流,如图14-2所示。应用程序输入设备输出设备输出流输入流输入输出设备输入输出流1-5北京源智天下科技有限公司联系方式:输入输出流类层次•iostream是一组C++类,用于实现面向对象模型的输入输出,可以提供无缓冲的(低级)和缓冲的I/O操作。在某些情况下,如果C++编译器提供的iostream库中没有合适的输入输出函数可用,我们还可以利用类的继承和多态特性来改进它们。•由于C++的流类库是用派生方法建立起来的输入输出类库,因此其必然有基类和派生类。C++中,其有两个平行的基类streambuf和ios,其它的流类都是从这两个基类直接或间接派生的。使用这些流类库时,必须包含相应的头文件。1-6北京源智天下科技有限公司联系方式:北京源智天下科技有限公司联系方式:标准输入输出流•C++将一些常用的流类对象,如键盘输入、显示器输出、程序运行出错输出、打印机输出等,实现定义并内置在系统中,供用户直接使用。这些系统内置的用于设备间传递数据的对象称为标准流类对象,共有四个:•cin对象:与标准输入设备相关联的标准输入流。•cout对象:与标准输出设备相关联的标准输出流。•cerr对象:与标准错误输出设备相关联的非缓冲方式的标准输出流。•clog对象:与标准错误输出设备相关联的缓冲方式的标准输出流。1-8北京源智天下科技有限公司联系方式:输入输出流成员函数•C++中,输入输出流除了可以使用前面介绍的输入输出流对象外,类istream有三个从流中进行非格式化抽取的成员函数:get()、getline()和read()。•get()函数:输出字符串•getline()函数:获取字符串1-9北京源智天下科技有限公司联系方式:输入输出的格式控制•C++仍可使用C中的printf()和scanf()进行格式化控制。同时,C++又提供了两种格式化控制的方法:一是是使用ios类中的有关个是控制的成员函数,另一种是使用被称为格式控制符的特殊类型的函数。•一般来说,ios类的成员函数进行格式控制主要是通过对格式状态字、域宽、填充字符和输出精度的操作来完成的。•预定义的格式控制符可以直接嵌入到输入输出语句中,完成类似于ios类中控制输入输出格式的成员函数的功能。1-10北京源智天下科技有限公司联系方式:以十进制形式输入输出整型数,用于输入或输出hex以十六进制形式输入输出整型数,用于输入或输出oct以八进制形式输入输出整型数,用于输入或输出ws用于输入时跳过开头的空白符,仅用于输入endl插入一个换行符并刷新输出流,仅用于输出ends插入一个空字符,用来结束一个字符串,仅用于输出flush刷新一个输出流,仅用于输出setbase(intn)把转换基数设置位n(n=0,8,10,16),缺省值为0(十进制)resetiosflags(longf)关闭由参数f指定的格式标志,用于输入或输出setiosflags(longf)设置由参数f指定的格式标志,用于输入或输出setfill(intc)设置c为填充字符,缺省为空格,用于输入或输出setprecision(intn)设置小数位数,缺省为6位,用于输入或输出setw(intn)设置域宽,用于输入或输出1-11北京源智天下科技有限公司联系方式:用户自定义数据类型的输入输出用户自定义数据类型的输入输出,是通过重载运算符“”和“”实现的1-12北京源智天下科技有限公司联系方式:重载输出运算符“”重载输出运算符“”也称为插入运算符,用以用户自定义类型的输出。定义运算符“”重载函数的一般形式为:ostream&operator(ostream&stream,类名对象名){//操作代码returnstream;}1-13北京源智天下科技有限公司联系方式:重载输入运算符“”重载输入运算符“”也称为提取运算符,用以用户自定义类型的输入。定义运算符“”重载函数的一般形式为:istream&operator(istream&stream,类名对象名){//操作代码returnstream;}其中,第一个参数stream是对istream对象的引用,必须是输入流,它可以是其它合法的标识符,但必须与return后面的标识符相同。第二个参数是一个引用,前面的“&”不能省掉。1-14北京源智天下科技有限公司联系方式:综合练习•该范例根据用户输入的学生类基本信息,将输入存储到学生类中后,输出该学生类的所有基本信息。1-15北京源智天下科技有限公司联系方式:定义学生类3{4public://定义公有成员5friendostream&operator(ostream&os,Cstudentstu);//重载输入输出符6friendistream&operator(istream&is,Cstudent&stu);7private://定义私有成员8charstrName[10];//姓名9charstrID[10];//学号10intfScore[3];//三门成绩11};12ostream&operator(ostream&os,Cstudentstu)//重载输出运算符13{14osendl输入的学生信息如下:endl姓名:stu.strNameendl学号:stu.strIDendl;15os三门成绩分别为:stu.fScore[0]\tstu.fScore[1]\tstu.fScore[2]endl;//输出16returnos;//返回对象17}18istream&operator(istream&is,Cstudent&stu)//重载输入运算符19{20cout请输入学生信息:endl姓名:;//输入提示21isstu.strName;//输入学生姓名22cout学号:;//输入提示23isstu.strID;//输入学生学号24cout三门成绩:;//输入提示25isstu.fScore[0]stu.fScore[1]stu.fScore[2];//输出成绩26returnis;//返回对象27}28voidmain()//主函数29{30Cstudentone;//创建对象31cinone;//调用重载后的输入运算符32coutone;//调用重载后的输出运算符33}1-16北京源智天下科技有限公司联系方式:思考和习题•在C++中,为什么不沿用C语言的printf与scanf函数?•用于设备间传递数据的对象称为标准流类对象,C++中共有4个这种对象,其分别是什么?•类istream有3个从流中进行非格式化抽取的成员函数,其分别是什么?•用户自定义数据类型的输入输出,是通过重载运算符“”和“”实现的,这两种运算符的重载如何在程序中实现?

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功