输入输出流类精.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《输入输出流类精.ppt》由会员分享,可在线阅读,更多相关《输入输出流类精.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、输入输出流类第1页,本讲稿共42页外外部部设设备备可可分分为为人人机机交交互互设设备备和和存存储设备储设备两个大类。两个大类。人人机机交交互互设设备备主主要要指指键键盘盘、显显示示器器等终端控制台设备和打印机。等终端控制台设备和打印机。存存储储设设备备指指磁磁带带、磁磁(软软、硬硬)盘盘、光盘等以文件形式存储持久数据的设备。光盘等以文件形式存储持久数据的设备。第2页,本讲稿共42页早早期期程程序序设设计计语语言言中中通通常常以以文文件件方方式式来来统统一一人人机机交交互互设设备备和和存存储储设设备备的的输输入入输输出出操操作作。即即将将人人机机交交互互设设备备当当作作一一种特殊文件对待。种特殊
2、文件对待。以以文文件件方方式式统统一一管管理理外外部部设设备备可可以以屏屏蔽蔽实实际际物物理理设设备备的的差差异异,有有利利于于整整体体上上简简化化程程序序设设计计语语言言与与外外部部设设备备交交换换信信息的处理过程。息的处理过程。第3页,本讲稿共42页C+语语言言对对输输入入输输出出的的处处理理引引入入了了“流流”这这个个比比文文件件抽抽象象程程度度更更高高的的概概念念。输输入入输输出出操操作作被被看看作作数数据据在在源源设设备备对对象象与与目目标标设设备对象之间的流动。备对象之间的流动。C+中中完完成成输输入入输输出出操操作作的的类类称称为为流流类,并提供了可重用的流类库。类,并提供了可重
3、用的流类库。第4页,本讲稿共42页11.1 C+流库结构流库结构标标准准ANSIC程程序序中中的的绝绝大大部部分分工工作作是是由由ANSIC标标准准库库中中的的printf,scanf完完成成的的,I/O功功能能作作为为ANSIC标标准准库库功功能能的的一一部部分分被被提提供供。在在C+中中iostream库库提提供供了了printf、scanf功功能能的的替替代代方方法法,输输入入输输出出功功能能的的实实现现由由一一个个iostream对象完成。对象完成。第5页,本讲稿共42页1 流缓冲区类流缓冲区类在在C+I/O类类库库定定义义文文件件iostream.h中中有有一一个个streambuf
4、类类,它它用用来来提提供供物物理理设设备备的的接接口口。缓缓冲冲区区由由一一段段预预留留的的字字符符存存储储空空间间和和两两个个指指针针组组成成,两两个个指指针针分分别别指指向向字字符符要要被被插插入入或或被被取取出出的的位位置置。streambuf类类定定义义了了一一组组缓缓冲冲或或处处理理流流的的通通用用方方法法,诸诸如如设设置置缓缓冲冲区区,移移动动指指针针,存存、取字符等。取字符等。conbufconbufstrstreambufstrstreambuffilebuffilebufstreambuf图图11.1流缓冲区类的派生关系流缓冲区类的派生关系C+I/O流类流类的结构(的结构(1
5、)第6页,本讲稿共42页streambuf类有三个派生类,其中:类有三个派生类,其中:(1)conbuf在在constream.h中定义,提供光标控中定义,提供光标控制、清屏,定义活动窗口等控制台操作接口和制、清屏,定义活动窗口等控制台操作接口和I/O缓冲区缓冲区管理功能。管理功能。(2)filebuf在在fstream.h中定义,它用来维护文中定义,它用来维护文件缓冲区的打开,关闭,读、写,建立磁盘文件的内存件缓冲区的打开,关闭,读、写,建立磁盘文件的内存代理。代理。(3)strstreambuf在在strstream.h中定义,提供在中定义,提供在内存进行提取和插入操作的缓冲区管理。内存进
6、行提取和插入操作的缓冲区管理。第7页,本讲稿共42页2 输入输出流类输入输出流类iostream.h中中还还有有以以ios类类为为基基类类的的一一组组流流类类的定义。的定义。ios类类及及其其派派生生类类均均含含有有一一个个指指向向streambuf类类的指针。通过的指针。通过streambuf类代理物理设备的操作。类代理物理设备的操作。从从类类ios开开始始,逐逐级级派派生生,形形成成了了较较为为复复杂杂的的结结构构,要要很很好好地地使使用用C+流流类类,必必须须逐逐级级了了解解其其父父类类的的public、和和protected类类型型的的成成员员函函数数、成成员变量。员变量。第8页,本讲
7、稿共42页istream_withassignistream_withassignostream_withassignostream_withassignstrstreambasestrstreambaseifstreamifstreamistrstreamistrstreamofstreamofstreamostrstreamostrstreamfstreamfstreamstrstreamstrstreamiostreamiostreamiostream_ withassign iostream_ withassign istreamistreamostreamostreamfstream
8、basefstreambaseios图图11.2ios类的派生关系类的派生关系C+I/O流类流类的结构(的结构(2)第9页,本讲稿共42页流类分类流类分类流类名称流类名称流类作用流类作用流基础类流基础类ios所有流类的父类、保存流的状态并处理错误所有流类的父类、保存流的状态并处理错误输入流类输入流类istream输输入入流流基基础础类类、将将流流缓缓冲冲区区中中的的字字符符作作格格式式化化和非格式化之间的转换,并输入。和非格式化之间的转换,并输入。ifstream文件输入流类文件输入流类istream_withassign为为cin输入流类即操作符输入流类即操作符输入流输入流istrstrea
9、m串输入流类串输入流类输出流类输出流类ostream输输出出流流的的基基础础类类、将将流流缓缓冲冲区区中中的的数数据据格格式式化化或非格式化转换,并输出。或非格式化转换,并输出。ofstream文件输出流类文件输出流类ostream_withassigncout,cerr,clog输出的流类即操作符输出的流类即操作符”“”进进行行了了重重载,用于完成对各种简单数据类型的输入和输出。载,用于完成对各种简单数据类型的输入和输出。第13页,本讲稿共42页11.2.2格式化的输入输出格式化的输入输出C+提提供供了了两两种种格格式式控控制制函函数数用用来来控控制制输输入入输输出出的的格式:格式:lios
10、类中定义的类中定义的格式控制成员函数格式控制成员函数l基于流对象的基于流对象的操纵函数操纵函数。相相比比之之下下操操纵纵函函数数使使用用更更为为方方便便。下下面面重重点点介介绍绍操操纵函数的概念和用法。纵函数的概念和用法。第14页,本讲稿共42页1ios 类中定义的格式控制标志类中定义的格式控制标志ios类类中中定定义义了了一一个个数数据据成成员员:格格式式控控制制标标志志字字longx_flags。x_flags每一位的状态值用枚举符号常量定义。每一位的状态值用枚举符号常量定义。enumskipws=0 x0001,/跳过输入空格跳过输入空格left=0 x0002,/输出左对齐调整输出左对
11、齐调整right=0 x0004,/输出右对齐调整输出右对齐调整internal=0 x0008,/输出符号和基指示符后的填补输出符号和基指示符后的填补dec=0 x0010,/转换为十进制转换为十进制(in/out)oct=0 x0020,/转换为八进制转换为八进制(in/out)hex=0 x0040,/转换为十六进制转换为十六进制(in/out)showbase=0 x0080,/输出显示基指示符输出显示基指示符showpoint=0 x0100,/输出显示小数点输出显示小数点uppercase=0 x0200,/大写十六进制输出大写十六进制输出showpos=0 x0400,/正整数显
12、示前加上正整数显示前加上”+”scientific=0 x0800,/输出用科学表示法表示浮点数输出用科学表示法表示浮点数fixed=0 x1000,/输出用固定小数点表示浮点数输出用固定小数点表示浮点数unitbuf=0 x2000,/在输出操作后刷新所有流在输出操作后刷新所有流stdio=0 x4000/在输出后刷新在输出后刷新stdout和和stderr;第15页,本讲稿共42页longx_flags=0 x0080=0000000010000000输出显示基指示符输出显示基指示符longx_flags=0 x0003=0000000000000011跳过输入空格跳过输入空格&输出左对齐
13、调整输出左对齐调整longx_flags=0 x0083=0000000010000011跳过输入空格跳过输入空格&输出左对齐调整输出左对齐调整&输出显示基指示符输出显示基指示符longx_flags标志可以由标志可以由ios类的成员函数类的成员函数flags(),setf()和和unsetf()访问,也可以用操纵函数操作。访问,也可以用操纵函数操作。第16页,本讲稿共42页2操纵函数和操纵符操纵函数和操纵符操操纵纵函函数数分分为为带带参参数数和和不不带带参参数数两两种种。不不带带参参数数的的操操纵纵函函数数又又叫叫操操纵纵符符。操操纵纵符符定定义义在在头头文文件件iostream.h中中,操
14、操纵纵函函数数定定义义在在头头文文件件iomanip.h中中.第17页,本讲稿共42页表11.2iostream.h中的操纵符操作符操作符用法举例用法举例结果说明结果说明deccoutdecdecintvar;将整数转化为十进制格式输出将整数转化为十进制格式输出将整数转化为十进制格式输入将整数转化为十进制格式输入hexcouthexhexintvar;将整数转化为十六进制格式输出将整数转化为十六进制格式输出将整数转化为十六进制格式输入将整数转化为十六进制格式输入octcoutoctoctintvar;将整数转化为八进制格式输出将整数转化为八进制格式输出将整数转化为八进制格式输入将整数转化为八进
15、制格式输入wscinws;忽略输入流中的空格忽略输入流中的空格endlcoutendl;插入换行符插入换行符,刷新流刷新流endscoutends;插入串最后的串结束符插入串最后的串结束符flushcoutflush;刷新一个输入流刷新一个输入流第18页,本讲稿共42页表表11.3iomanip.h中的操纵函数中的操纵函数setprecision(int)coutsetprecision(15)输出浮点数精度为输出浮点数精度为6位小数位小数输入浮点数精度为输入浮点数精度为15位小数位小数setw(int)coutsetw(6)setw(24)buf;输出数据宽度为输出数据宽度为6输入数据宽度为
16、输入数据宽度为24setiosflags(long)coutsetioflags(ios:oct|ios:skipws)指指定定数数据据输输出出的的格格式式为为十十六六进进制格式且用大写字母输出制格式且用大写字母输出指指定定数数据据输输入入的的格格式式为为八八进进制制格式且跳过输入中的空白格式且跳过输入中的空白resetiosflags(long)coutresetiosflags(ios:hex)取取消消数数据据输输出出的的格格式式为为十十进进制制格式格式取取消消数数据据输输入入的的格格式式为为十十进进制制格式格式第19页,本讲稿共42页例例11.1 操纵符的使用操纵符的使用#include
17、#includevoidmain()doublevalues=1.23,35.36,653.7,4358.24;char*names=Zoot,Jimmy,Al,Stan;coutsetiosflags(ios:fixed);/浮点数使用普通记数法表示浮点数使用普通记数法表示for(inti=0;i4;i+)coutsetiosflags(ios:left)/设置左对齐设置左对齐setw(6)/设置数据宽度为设置数据宽度为6位位namesiresetiosflags(ios:left)/撤消左对齐撤消左对齐setw(10)/设置数据宽度为设置数据宽度为10位位setprecision(1)/设
18、置浮点数精度设置浮点数精度1位位valuesi”又又称称提提取取运运算算符符,流流的的输输出出运运算符算符”又称插入运算符,它们都可以重载。又称插入运算符,它们都可以重载。第21页,本讲稿共42页例:用户定义的日期例:用户定义的日期Date类的输入输出。类的输入输出。为保持和简单类型的输入输出同样的形为保持和简单类型的输入输出同样的形式,需要为式,需要为Date类重载操作符类重载操作符。由于重载的函数需要访问由于重载的函数需要访问Date类的私有的类的私有的和受保护的成员,应该把这些重载的函数定和受保护的成员,应该把这些重载的函数定义为义为Date类的友元。类的友元。第22页,本讲稿共42页#
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 输入输出 流类精
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内