格式化输出(参考).ppt

上传人:hyn****60 文档编号:71445317 上传时间:2023-02-03 格式:PPT 页数:20 大小:383KB
返回 下载 相关 举报
格式化输出(参考).ppt_第1页
第1页 / 共20页
格式化输出(参考).ppt_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《格式化输出(参考).ppt》由会员分享,可在线阅读,更多相关《格式化输出(参考).ppt(20页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1.输入输出流的概念输入输出流的概念(1)(1)什么是什么是“流流”?C+中中的的“流流”(stream)是是一一种种抽抽象象,它它表表示示数数据从源端流向目的端据从源端流向目的端。输输入入流流(Input Stream)表表示示的的是是数数据据从从输输入入设设备备(如如 键键 盘盘、磁磁 盘盘 等等)流流 向向 内内 存存,输输 出出 流流(Output Stream)表表示示的的是是数数据据从从内内存存流流向向输输出出设设备备(如如屏屏幕幕、打打印印机机、磁磁盘盘等等)。输输入入输输出出流流(I/O Stream)是是输输入入流和输出流的合称。流和输出流的合称。“流流”中中的的内内容容可可

2、以以是是任任意意形形式式的的数数据据,例例如如:ASCII字字符符、二二进进制制形形式式的的数数据据、图图形形、图图像像、声声音音等信息。等信息。输入输出流具有方向性输入输出流具有方向性:输入流输入流输出流输出流在在内存内存中为中为每一个数据流每一个数据流开辟了开辟了一个内存缓冲区一个内存缓冲区,用于用于保存流中的数据保存流中的数据。输入时输入时输入时输入时:键盘键盘键盘键盘-键盘缓冲区键盘缓冲区键盘缓冲区键盘缓冲区-输入缓冲区输入缓冲区输入缓冲区输入缓冲区-内存内存内存内存按按按按回车键回车键输出时输出时输出时输出时:内存内存内存内存-输出缓冲区输出缓冲区输出缓冲区输出缓冲区-显示器显示器显

3、示器显示器满了或遇满了或遇满了或遇满了或遇endl(2)C+将输入输出流(简称将输入输出流(简称I/O流)分成三种类型:流)分成三种类型:标准输入输出流标准输入输出流:流向标准输入输出设备(即键盘、:流向标准输入输出设备(即键盘、显示器)的数据;显示器)的数据;文件输入输出流文件输入输出流:流向外存磁盘文件的数据;:流向外存磁盘文件的数据;字符串输入输出流字符串输入输出流:对内存中指定的空间(通常用一:对内存中指定的空间(通常用一个字符数组作为存储空间)进行输入输出操作,流向这个字符数组作为存储空间)进行输入输出操作,流向这里的数据。里的数据。我们只对标准输入输出流、文件输入输出流进行我们只对

4、标准输入输出流、文件输入输出流进行讨论,对字符串输入输出流不作介绍。讨论,对字符串输入输出流不作介绍。(3)输入输出的类、类库输入输出的类、类库流类:在流类:在C+中定义的实现中定义的实现I/O的类的类;流库:多个流类及其类层次集合;流库:多个流类及其类层次集合;C+C+中的流类由两类中的流类由两类平行基类平行基类iosios和和streambufstreambuf组成组成,所有流类所有流类都通过这两个基类派生出来都通过这两个基类派生出来。iosios类类是所有是所有iosios类层次的基类类层次的基类,提供,提供输入输入/输出所输出所需要的公共操作需要的公共操作。(4)I/O类库的几个常见流

5、类类库的几个常见流类 类名类名说明说明声明的头声明的头文件文件抽象流基类抽象流基类ios流基类流基类iostream标准标准I/O类类 istreamostreamiostream标准输入流和其他输入流的基类标准输入流和其他输入流的基类标准输出流和其他输出流的基类标准输出流和其他输出流的基类标准输入输出流和其他标准输入输出流和其他I/O流的基类流的基类文件文件I/O类类 ifstreamofstreamfstream输入文件流类输入文件流类输出文件流类输出文件流类输入输出文件流类输入输出文件流类fstream(5)iostream头文件头文件中定义的流对象中定义的流对象 对象对象含义含义对应设

6、备对应设备对应的类对应的类说明说明cin标准输入流标准输入流键盘键盘iostream_withassigncout 标准输出流标准输出流屏幕屏幕iostream_withassigncerr标准输出流标准输出流屏幕屏幕iostream_withassign没有缓冲没有缓冲clog 标准输出流标准输出流屏幕屏幕iostream_withassign有缓冲有缓冲说明:说明:cin、cout是是编译系统能直接识别的系统级对象编译系统能直接识别的系统级对象;cin.从流中获取数据从流中获取数据是流对象的是流对象的输入操作输入操作,称为,称为“提取提取”;cout.向流中添加数据向流中添加数据是流对象的

7、是流对象的输输出操作出操作,称为,称为“插入插入”。2.标准输出流标准输出流(1)输出流对象输出流对象cout:输出输出基本类型数据基本类型数据时,时,不必考虑数据是什么不必考虑数据是什么类型类型,系统会自动判断,选择相应的重载函数;输,系统会自动判断,选择相应的重载函数;输出出用户自己定义的类型数据时用户自己定义的类型数据时,要,要重载重载运算符运算符(具具体见第体见第8讲内容讲内容);cerr:是是在屏幕上显示出错信息在屏幕上显示出错信息,与,与cout用法类似,用法类似,不同的是不同的是只能在屏幕上只能在屏幕上,而不能在磁盘文件上输出,而不能在磁盘文件上输出错误信息;错误信息;clog:

8、用法与用法与cerr类似,不同点是类似,不同点是它带有缓冲区它带有缓冲区。(2)格式输出格式输出 1)用格式控制符控制输出输出不同进制的数:输出不同进制的数:dec(十进制十进制)、hex(十六进制十六进制)、oct(八进制)(八进制)例:例:int n=20;cout设置进制设置进制:endl;cout十进制十进制:nendl;cout十六进制十六进制:hexnendl;cout八进制八进制:octnendl;cout十进制十进制:decnendl;程序运行结果:程序运行结果:十进制十进制:20十六进制十六进制:14八进制八进制:24十进制十进制:20设置域宽:设置域宽:setw(n),n小

9、于实际宽度小于实际宽度时,按实际宽度时,按实际宽度输出,输出,它一次只控制一个数值输出它一次只控制一个数值输出。例:例:int m=1234;cout设置域宽设置域宽:endl;coutsetw(3)mendl;coutsetw(5)mendl;coutsetw(10)mendl;程序运行结果:程序运行结果:设置域宽:设置域宽:1234 1234 1234设置填充字符:设置填充字符:setfill(c),需要与需要与setw(n)合用合用 例:例:int m=1234;cout设置填充字符设置填充字符:endl;coutsetfill(*)setw(5)mendl;coutsetw(10)me

10、ndl;程序运行结果:程序运行结果:设置填充字符设置填充字符:*1234*1234设置对齐方式:设置对齐方式:setiosflags(ios:left)(左对齐左对齐)、setiosflags(ios:right)(右对齐右对齐)int m=1234;cout设置对齐方式设置对齐方式endl;coutsetfill();coutsetiosflags(ios:left)setw(10)mendl;coutsetiosflags(ios:right)setw(10)mendl;程序运行结果:程序运行结果:设置对齐方式设置对齐方式1234 1234强制显示小数点和尾强制显示小数点和尾0:setio

11、sflags(ios:showpoint)强制显示符号:强制显示符号:setiosflags(ios:showpos)double d1=10/5,d2=22.0/7;cout显示小数点、尾和数符显示小数点、尾和数符:endl;coutd1endl;coutsetiosflags(ios:showpoint)d1endl;coutsetiosflags(ios:showpos)d2endl;coutresetiosflags(ios:showpos);程序运行结果:程序运行结果:显示小数点、尾和数符显示小数点、尾和数符22.00000+3.14286设置浮点数的输出是以科学记数法还是定点数设置

12、浮点数的输出是以科学记数法还是定点数setiosflags(ios:scientific)(科学记数法科学记数法)setiosflags(ios:fixed)(定点数定点数)double dd=123.4567;coutsetiosflags(ios:scientific)ddendl;coutsetiosflags(ios:fixed)ddendl;程序运行结果:程序运行结果:1.234567E+002123.457设置精度设置精度(有效数字有效数字):setpreciion(n)自动四舍五入自动四舍五入 double dd=123.4567;coutsetprecision(2)ddend

13、l;coutsetprecision(3)ddendl;coutsetprecision(4)ddendl;coutsetprecision(5)ddendl;程序运行结果:程序运行结果:1.2E+002123.123.5123.46输出十六进制数时控制英文字母的大小写:输出十六进制数时控制英文字母的大小写:setiosflags(ios:uppercase)int num=510;cout以大小写方式输出进制数以大小写方式输出进制数:endl;cout16进制数进制数(默认:小写方式默认:小写方式):hexnumendl;cout以大写方式输出进制数以大写方式输出进制数:setiosflag

14、s(ios:uppercase)hexnumendl;cout恢复小写方式输出进制数恢复小写方式输出进制数:resetiosflags(ios:uppercase)hexnumendl;程序运行结果:程序运行结果:以大小写方式输出进制数以大小写方式输出进制数:16进制数进制数(默认:小写方式默认:小写方式):1fe以大写方式输出进制数以大写方式输出进制数:1FE恢复小写方式输出进制数恢复小写方式输出进制数:1fe2)用流对象的成员函数控制输出格式用流对象的成员函数控制输出格式流成员函数流成员函数与之等效的格式符与之等效的格式符作用作用precision(n)setprecision(n)设置实

15、数的精度设置实数的精度width(n)setw(n)设置字段的宽度设置字段的宽度fill(c)setfill(c)设置填充字符设置填充字符setf()setiosflags()设置输出格式设置输出格式,形如形如:ios:unsetf()resetiosflags()取消已有的设置取消已有的设置(3)用流成员函数用流成员函数put()输出字符输出字符 格式格式:put(字符型字符型)功能:输出单一个字符功能:输出单一个字符/例例13-2 用流成员函数用流成员函数put()反序输出一个字符串反序输出一个字符串#include using namespace std;void main()char

16、str=Programming with C+;for(int i=sizeof(str)/sizeof(str0)-2;i=0;i-)cout.put(*(str+i);cout.put(n);程序运行结果:程序运行结果:+C htiw gnimmargorP问题:问题:为什么为什么i=sizeof(str)/sizeof(str0)-2?3.标准输入流标准输入流(1)输入流对象输入流对象在在C+中,中,默认的标准输入设备是键盘默认的标准输入设备是键盘,在,在iostream文件中定义了文件中定义了cin输入流对象输入流对象。cin对象与提取运算符对象与提取运算符、变量名或数组名一起、变量名

17、或数组名一起构成输入语句,形式为:构成输入语句,形式为:cin;,能;,能够连续输入多项内容。只要是基本数据类型够连续输入多项内容。只要是基本数据类型,不管,不管是是int、double、float,还是,还是char、char*等,等,都都可以写成这种形式可以写成这种形式,这给用户提供了很大的方便。,这给用户提供了很大的方便。如果要输入用户自己定义的类型数据,就要用友元如果要输入用户自己定义的类型数据,就要用友元方式重载方式重载运算符运算符,有关这方面内容在第,有关这方面内容在第8讲已有讲已有介绍。介绍。(2)用于字符输入的流成员函数用于字符输入的流成员函数 1)get()函数函数get的含

18、义是的含义是“获取,得到获取,得到”的意思,在的意思,在C+中,中,get()函数的用法很灵活,既可以输入一个字符,也可以输函数的用法很灵活,既可以输入一个字符,也可以输入一串字符,而且内容还可以是回车、入一串字符,而且内容还可以是回车、tab、空格等空、空格等空白字符。它有三种形式:白字符。它有三种形式:a)不带参数的不带参数的get()函数函数格式:格式:cin.get()功能:功能:读入一个字符读入一个字符(包括回车、包括回车、tab、空格等空白字、空格等空白字符符)char ch;while(ch=cin.get()!=EOF)/EOF为文件结束符,按为文件结束符,按ctrl+z 输入

19、输入cout.put(ch);b)带一个参数带一个参数的的get()函数函数格式:格式:cin.get(ch)功能:功能:读入一个字符读入一个字符,如果如果读取成功则返回非读取成功则返回非0值值(真真),如失败如失败(遇到文件结束符遇到文件结束符)则函数返回则函数返回0值值(假假)。改写上一例:改写上一例:char ch;while(cin.get(ch)cout.put(ch);c)带三个参数带三个参数的的get()函数函数格式:格式:cin.get(字符数组,字符个数字符数组,字符个数n,终止字符终止字符)或或 cin.get(字符指针,字符个数字符指针,字符个数n,终止字符终止字符)3)

20、带三个参数带三个参数的的get()函数函数(续续)功能:功能:从输入流中从输入流中读取读取n-1字符,赋给字符数组字符,赋给字符数组或或字符字符指针所指向的数组指针所指向的数组。如果在读取。如果在读取n-1个字符个字符之前遇到之前遇到终止字符终止字符,则,则提前结束提前结束。如果。如果成功成功则返回则返回非非0,失败失败则返回则返回0。例:输入包含空格的字符串例:输入包含空格的字符串char str80;cout请输入一个字符串:请输入一个字符串:;cin.get(str,80,n);coutstrendl;程序运行结果:程序运行结果:请输入一个字符串:请输入一个字符串:google labs

21、google labs2)getline()函数函数其功能、用法与带三个参数的其功能、用法与带三个参数的get()一样一样,只是,只是它的函数名更容易理解、记忆。它的函数名更容易理解、记忆。格式格式:cin.getline(字符数组或字符指针,字符个数字符数组或字符指针,字符个数n,终止字符终止字符)功能:功能:与带三个参数的与带三个参数的get()功能类似,从输入流中读功能类似,从输入流中读取取n-1字符,赋给字符数组或字符指针所指向的空字符,赋给字符数组或字符指针所指向的空间间。如果在读取。如果在读取n-1个字符之前遇到终止字符(如个字符之前遇到终止字符(如果不写,默认为果不写,默认为 n

22、),则提前结束。),则提前结束。问题问题:请自己用请自己用getline()函数改写上例,功能不变。函数改写上例,功能不变。(3)几个与流操作有关的判断函数几个与流操作有关的判断函数 eof()函数:函数:是是”end of file”的缩写,表示的缩写,表示“文件结文件结束束”。到达文件末尾。到达文件末尾(即遇到文件结束符即遇到文件结束符)时为时为“真真”,否则为否则为“假假”。这个函数经常用到。这个函数经常用到。fail()函数函数:操作失败时返回:操作失败时返回“真真”,操作成功时返,操作成功时返回回“假假”。!运算符经过了重载,它的功能与运算符经过了重载,它的功能与fail()函数相同,函数相同,即:即:!cin 与与 cin.fail()等价等价!cout 与与 cout.fail()等价等价

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com