《C输入输出流操作控制.pptx》由会员分享,可在线阅读,更多相关《C输入输出流操作控制.pptx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1学 习 目 标 流的概念 简单的格式控制第1页/共27页2流的概念流的概念流是C+中的重要概念,标准输入输出流(cin,cout)和输入输出文件流是常用的流C+中的流实际上是一个字节序列 输入操作是控制序列中的字节内容从一个设备流入内存 输出操作是控制序列中的字节内容从内存流向某个设备 这里的设备可以是键盘、显示器、打印机、磁盘等第2页/共27页3除了针对数据类型的不同操作之外,流还用一些标志来表明该如何操作数据 控制输出数据的占位宽度 控制输出浮点数的精度可以用函数setiosflags()和resetiosflags()来改变这些标志这些函数和操作包含在头文件iostream或ioman
2、ip中,在程序中注意用#include包含它们用cin、cout处理整数、浮点数、字符等不同类型的数据时,只需用同样的程序语句,这是因为流对不同数据的类型进行了不同的操作第3页/共27页4 控制符 作用 dec 控制输出10进制数 hex 控制输出16进制数 oct 控制输出8进制数 setfill(c)c为填充字符 setprecision(n)设制n位小数显示精度 setw(n)设置n个字符的显示宽度 setiosflags(ios:fixed)固定浮点显示小数 setiosflags(ios:scientific)用指数方式显示小数 setiosflags(ios:left)左对齐显示
3、setiosflags(ios:right)右对齐显示 setiosflags(ios:skipws)忽略前导空白 setiosflags(ios:uppercase)16进制数用大写字母输出 setiosflags(ios:lowercase)16进制数用小写字母输出 第4页/共27页5输出流格式控制输出流格式控制控制输出宽度 为了调整输出,可以通过在流中放入setw操纵符或调用width成员函数为每个项指定输出宽度。第5页/共27页6例例 使用使用width函数控制输出宽度函数控制输出宽度#include using namespace std;int main()int i;double
4、 values =1.23,35.36,653.7,4358.24;for(i=0;i4;i+)cout.width(10);/设置10个字符的输出宽度 cout valuesi endl;/cout“0123456789”endl;return 0;第6页/共27页7输出结果是:在一列中以至少10个字符宽按右对齐方式输出在少于10个字符宽的数值前加入空格第7页/共27页8空格空格是默认的填充符:当输出的数据是默认的填充符:当输出的数据不能充满指定的宽度时,系统会自动不能充满指定的宽度时,系统会自动以空格填充以空格填充编程人员可以使用编程人员可以使用fillfill成员函数为已成员函数为已经指
5、定宽度的项设置自己需要的填充经指定宽度的项设置自己需要的填充符符若以若以“*”为填充符,则前面的例子为填充符,则前面的例子可以修改为如下可以修改为如下第8页/共27页9#include#include using namespace std;using namespace std;int main()int main()double values =1.23,35.36,653.7,double values =1.23,35.36,653.7,4358.24;4358.24;forfor (int int i=0;i4;i+)i=0;i4;i+)/设置输出宽度为1010 cout.width
6、(10);cout.width(10);/设置输出填充符为*cout.fill(*);cout.fill(*);cout valuesi endl;cout valuesi endl;return 0;return 0;第9页/共27页10输出结果是:若想为同一行中输出的不同数据项分别指定宽度,可以使用setw操纵符,如下:第10页/共27页11例例 使用使用setw操纵符指定宽度操纵符指定宽度#include#include /为使用setw操纵符必须加入的库函数using namespace std;int main()double values =1.23,35.36,653.7,dou
7、ble values =1.23,35.36,653.7,4358.24;4358.24;char*names =Zoot,Jimmy,Al,char*names =Zoot,Jimmy,Al,Stan;Stan;for(int i=0;i4;i+)cout setw(6)namesi setw(10)valuesi endl;return 0;操纵 操纵第11页/共27页12输出结果是:setwsetw和和widthwidth都不截断数值,如果数值超过了指定都不截断数值,如果数值超过了指定宽度,则显示全部值(遵守精度设置)宽度,则显示全部值(遵守精度设置)setwsetw和和widthwid
8、th仅影响紧随其后的项,在一项输出完仅影响紧随其后的项,在一项输出完后,宽度恢复成默认后,宽度恢复成默认值值第12页/共27页13例例 设置对齐方式设置对齐方式 输出数据时默认的方式是右对齐,可以设置标志使输出按照其他对齐方式 使用带参数的函数setiosflags()和resetiosflags()来实现所需要的方式 setiosflags()不同于setw和width,它的影响是持久的,直到用resetiosflags()重新恢复默认值为止 为了使前面的例子实现:姓名左对齐、数值右对齐,我们修改如下:第13页/共27页14#include#include using namespace s
9、td;int main()double values =1.23,35.36,653.7,4358.24;char*names =Zoot,Jimmy,Al,Stan;for(int i=0;i4;i+)cout cout setiosflags(ios:left)setiosflags(ios:left)/设置左对齐 setw(6)namesi setw(6)namesi resetiosflags(ios:left)resetiosflags(ios:left)/去掉左对齐 setw(10)valuesi setw(10)valuesi endl;endl;return 0;第14页/共2
10、7页15输出结果是:第15页/共27页16例例 控制输出精度控制输出精度 浮点数输出精度的默认值是6:如数3466.9768显示为3466.98 为了改变精度,可以使用setprecision操纵符及2个标志:ios:fixed 和 ios:scientific 若设置ios:fixed,输出为:3466.976800 若设置ios:scientific,输出为:3.466977e+003 若设置了ios:fixed 或 ios:scientific,则精度值确定了小数点之后的小数位数;若都未设置,则精度值确定了总的有效位 可以用resetiosflags()清除这些标志第16页/共27页17
11、#include#include using namespace std;int main()double values =1.23,35.36,653.7,4358.24;char*names =Zoot,Jimmy,Al,Stan;/cout setiosflags(ios:scientific);for(int i=0;i4;i+)coutcout setiosflags(ios:left)setiosflags(ios:left)/设置左对齐 setw(6)namesi setw(6)namesi resetiosflags(ios:left)/resetiosflags(ios:le
12、ft)/去掉左对齐 setw(10)setw(10)setprecision(1)setprecision(1)valuesi valuesi endl;endl;return 0;第17页/共27页18输出结果是:/cout setiosflags(ios:scientific);/cout setiosflags(ios:scientific);cout setiosflags(ios:scientific);cout setiosflags(ios:scientific);第18页/共27页19输出字符图形输出字符图形第19页/共27页20#include#include using n
13、amespace std;int main()for(int i=0;i10;i+)couti;0123456789 coutendl;*for(int x=1;x=10;x+)*coutsetfill(*)/填充*setw(x)/设置输出宽度x *“*endl;*return 0;*/宽度随 x 的增大而增加 *第20页/共27页21#include#include using namespace std;int main()for(int i=0;i10;i+)couti;0123456789 coutendl;*for(int x=1;x=10;x+)*coutsetfill(*)/填充
14、*setw(x)/设置输出宽度x *“*endl;*return 0;*/宽度随 x 的增大而增加 *第21页/共27页22输出图形输出图形#include#include using namespace std;int main()for(int i=0;i10;i+)couti;/0123456789 coutendl;/*for(int x=1;x=9;x+)/*coutsetfill()/*setw(10-x)/*“”/*setfill(*)/*setw(x)/*“*”/*endl;/*cout“*”endl;/*return 0;第22页/共27页23输出图形输出图形#include
15、#include using namespace std;int main()for(int i=0;i10;i+)couti;/0123456789 coutendl;/*for(int x=1;x=9;x+)/*coutsetfill()/*setw(10-x)/*“”/*setfill(*)/*setw(x)/*“*”/*endl;/*cout“*”endl;/*return 0;第23页/共27页24#include#include using namespace std;int main()for(int i=0;i=9;i+)couti;0123456789 coutendl;*f
16、or(int x=1;x=5;x+)*coutsetfill()*setw(x)*“”*setfill(*)setw(11-2*x)“*”endl;return 0;第24页/共27页25#include#include using namespace std;int main()for(int i=0;i=9;i+)couti;0123456789 coutendl;*for(int x=1;x=5;x+)*coutsetfill()*setw(x)*“”*setfill(*)setw(11-2*x)“*”endl;return 0;第25页/共27页26结结 束束第26页/共27页27感谢您的欣赏!第27页/共27页