1.使用width函数控制输出宽度
/*
cout输出默认右对齐
double型数据默认精度为6
cout.width(10)设置输出宽度为10 width函数在iostream声明了
cout.fill()默认是使用空格进行填充 cout.fill('*')指定*为填充符
*/
#include<iostream>
using namespace std;
int main(){
double values[]={1.2366,2.5,45.4564564456,123.44};
cout.fill('*');
int length=sizeof(values)/sizeof(double);
for(int i=0;i<length;i++){
cout.width(10);
cout<<values[i]<<endl;
}
return 0;
}
运行结果:
****1.2366
*******2.5
***45.4565
****123.44
2.使用setw操纵符指定宽度
/*
如果要为同一行中输出的不同数据项分别设置格式,可以使用setw操纵符
width函数在iostream声明了 如果带参量使用setw或任何其他操纵符,就必须包括iomanip
setw和width都不截断数值,如果数值超过了指定宽度,则显示全部值,
但是同时也遵守流的精度设置
*/
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
int main(){
double values[]={1.23,35.36,635.7,4358.2444};
string names[]={"Zoot","Jimmy","Al","Stan"};
cout.fill('*');
cout.precision(7);
for(int i=0;i<4;i++)
{
cout<<setw(6)<<names[i]<<setw(6)<<values[i]<<endl;
}
return 0;
}
运行结果:
**Zoot**1.23
*Jimmy*35.36
****Al*635.7
**Stan4358.244
3.对齐方式以及精度控制
/*
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。
setiosflags(ios::fixed)是用定点方式表示实数。
如果与setiosflags(ios::scientific)合用,'可以控制指数表示法的小数位数。
setiosflags(ios::scientific)是用指数方式表示实数。
*/
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
int main(){
double values[]={1.23,35.36,653.7,4358.24};
string names[]={"Zoot","Jimmy","Al","Stan"};
cout.fill('*');
for(int i=0;i<4;i++){
cout<<setiosflags(ios_base::left)<<setw(6)<<names[i]//左对齐方式 宽度为6
<<resetiosflags(ios_base::left)<<setw(10)//清除前面的输出格式 宽度为10
<<setiosflags(ios_base::fixed)//定点方式 ,小数点右面的个数为2
<<setprecision(2)<<values[i]<<endl;}
cout<<setiosflags(ios::fixed)<<setprecision(3)<<1.2345<<endl;//1.234
cout<<resetiosflags(ios::fixed);//需要用resetiosflags()函数清除前面的输出格式
cout<<setiosflags(ios::scientific)<<setprecision(3)<<12345.0<<endl;// 1.234e+04
return 0;
}
运行结果:
Zoot********1.23
Jimmy******35.36
Al********653.70
Stan*****4358.24
1.234
1.234e+04