#include <iostream> //不要用iostream.h ,会出现好多问题#include <iomanip> // io 流控制头文件, 主要是一些操纵用法如setw(int n),setprecision(int n) ,setbase(int n),setfill(char c)的.▲setw(n)用法:通俗地讲就是预设宽度如 cout<<setw(5)<<255<<endl;结果是:(空格)(空格)255▲setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充如 cout<<setfill('@')<<setw(5)<<255<<endl;结果是:@@255▲setbase(int n) : 将数字转换为 n 进制.如 cout<<setbase(8)<<setw(5)<<255<<endl;cout<<setbase(10)<<setw(5)<<255<<endl;cout<<setbase(16)<<255<<endl;结果是:(空格)(空格)377(空格)(空格) 255(空格)(空格) ff▲ setprecision用法使用setprecision(n)可控制输出流显示浮点数的数字个数。
C++默认的流输出数值有效位是6。
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。
setiosflags(ios::fixed)是用定点方式表示实数。
如果与setiosnags(ios::scientific)合用,可以控制指数表示法的小数位数。
setiosflags(ios::scientific)是用指数方式表示实数。
例如,下面的代码分别用浮点、定点和指数方式表示一个实数:view sourceprint?#include <iostream>#include <iomanip>int main(){double amount = 22.0/7;cout << amount << endl;cout << setprecision(0) << amount << endl<< setprecision(1) << amount << endl<< setprecision(2) << amount << endl<< setprecision(3) << amount << endl<< setprecision(4) << amount << endl;cout << setiosflags(ios::fixed);cout << setprecision(8) << amount << endl;cout << setiosflags(ios::scientific) << amount <<endl; cout <<setprecision(6); //重新设置成原默认设置return 0;}运行结果为:3.14286333.13.143.1433.142857143.14285714e+00该程序在32位机器上运行通过。
在用浮点表示的输出中,setprecision(n)表示有效位数。
第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了有效位数0,C++最小的有效位数为1,所以作为有效位数设置为1来看待:第3~6行输出按设置的有效位数输出。
在用定点表示的输出中,setprecision(n)表示小数位数。
第7行输出是与setiosflags(ios::fixed)合用。
所以setprecision(8)设置的是小数点后面的位数,而非全部数字个数。
在用指数形式输出时,setprecision(n)表示小数位数。
第8行输出用setiosflags(ios::scientific)来表示指数表示的输出形式。
其有效位数沿用上次的设置值8。
setw(n)是设置域宽。
就是你的输出要占多少个字符。
比如:cout<<setw(5)<<12345<<endl;就输出:12345cout<<setw(6)<<12345<<endl;输出:12345而如果你要输出的字符宽度超出了setw(n)的n值,就按输出字符的宽度输出。
如你的cout<<setw(4)<<12.3456<<endl;就输出12.3456(1)什么是“流”?C++中的“流”(stream)是一种抽象,它表示数据从源端流向目的端。
输入流(Input Stream)表示的是数据从输入设备(如键盘、磁盘等)流向内存,输出流(Output Stream)表示的是数据从内存流向输出设备(如屏幕、打印机、磁盘等)。
输入输出流(I/O Stream)是输入流和输出流的合称。
“流”中的内容可以是任意形式的数据,例如:ASCII字符、二进制形式的数据、图形、图像、声音等信息。
(2)C++将输入输出流(简称I/O流)分成三种类型:标准输入输出流:流向标准输入输出设备(即键盘、显示器)的数据;文件输入输出流:流向外存磁盘文件的数据;字符串输入输出流:对内存中指定的空间(通常用一个字符数组作为存储空间)进行输入输出操作,流向这里的数据。
我们只对标准输入输出流、文件输入输出流进行讨论,对字符串输入输出流不作介绍。
(3)输入输出的类、类库流类:在C++中定义的实现I/O的类;流库:多个流类及其类层次集合;C++中的流类由两类平行基类ios和streambuf组成,所有流类都通过这两个基类派生出来。
ios类是所有ios类层次的基类,提供输入/输出所需要的公共操作。
(1)输出流对象cout:输出基本类型数据时,不必考虑数据是什么类型,系统会自动判断,选择相应的重载函数;输出用户自己定义的类型数据时,要重载<<运算符(具体见第讲内容);cerr:是在屏幕上显示出错信息,与cout用法类似,不同的是只能在屏幕上,而不能在磁盘文件上输出错误信息;clog:用法与cerr类似,不同点是它带有缓冲区。
(2)格式输出1)用格式控制符控制输出输出不同进制的数:dec(十进制)、hex(十六进制)、oct(八进制)例:int n=20;cout<<"设置进制: "<<endl;cout<<"十进制: "<<n<<endl;cout<<"十六进制: "<<hex<<n<<endl;cout<<"八进制: "<<oct<<n<<endl;cout<<"十进制: "<<dec<<n<<endl;设置域宽:setw(n), n小于实际宽度时,按实际宽度输出,它一次只控制一个数值输出。
例:int m=1234;cout<<"设置域宽: "<<endl;cout<<setw(3)<<m<<endl;cout<<setw(5)<<m<<endl;cout<<setw(10)<<m<<endl;设置填充字符:setfill(c),需要与setw(n)合用例:int m=1234;cout<<"设置填充字符: "<<endl;cout<<setfill(‘*’)<<setw(5)<<m<<endl;cout<<setw(10)<<m<<endl;设置对齐方式:setiosflags(ios::left)(左对齐)、setiosflags(ios::right)(右对齐)int m=1234;cout<<"设置对齐方式"<<endl;cout<<setfill(' ');cout<<setiosflags(ios::left)<<setw(10)<<m<<endl;cout<<setiosflags(ios::right)<<setw(10)<<m<<endl;强制显示小数点和尾:setiosflags(ios::showpoint)强制显示符号:setiosflags(ios::showpos)double d1=10/5,d2=22.0/7;cout<<"显示小数点、尾和数符: "<<endl;cout<<d1<<endl;cout<<setiosflags(ios::showpoint)<<d1<<endl;cout<<setiosflags(ios::showpos)<<d2<<endl;cout<<resetiosflags(ios::showpos);设置浮点数的输出是以科学记数法还是定点数setiosflags(ios::scientific)(科学记数法)setiosflags(ios::fixed)(定点数)double dd=123.4567;cout<<setiosflags(ios::scientific)<<dd<<endl;cout<<setiosflags(ios::fixed)<<dd<<endl;设置精度(有效数字):setpreciion(n)自动四舍五入double dd=123.4567;cout<<setprecision(2)<<dd<<endl;cout<<setprecision(3)<<dd<<endl;cout<<setprecision(4)<<dd<<endl;cout<<setprecision(5)<<dd<<endl;输出十六进制数时控制英文字母的大小写:setiosflags(ios::uppercase)int num=510;cout<<"以大小写方式输出进制数: "<<endl;cout<<"16进制数(默认:小写方式):"<<hex<<num<<endl;cout<<"以大写方式输出进制数:"<<setiosflags(ios::uppercase)<<hex<<num<<endl;cout<<"恢复小写方式输出进制数:"<<resetiosflags(ios::uppercase)<<hex<<num<<endl;程序运行结果:以大小写方式输出进制数:16进制数(默认:小写方式):1fe以大写方式输出进制数:1FE恢复小写方式输出进制数: 1fe(3) 用流成员函数put()输出字符格式: put(字符型)功能:输出单一个字符//例-2 用流成员函数put()反序输出一个字符串#include<iostream>using namespace std;void main(){char str[]="Programming with C++";for( int i=sizeof(str)/sizeof(str[0])-2 ; i>=0; i--)cout.put(*(str+i));cout.put('\n');}在C++中,默认的标准输入设备是键盘,在iostream文件中定义了cin输入流对象。