C++标准输出的一些格式控制符如下,使用这些控制符之前,必须在程序开头加上头文件:#include <iomanip>
left | 输出数据在指定宽度内左对齐 |
right | 输出数据在指定宽度内右对齐 |
internal | 输出数据在指定宽度内内部对齐 |
boolalpha | 把逻辑值输出为true或false,否则就输出0或1 |
fixed | 按定点格式显示浮点数 |
scientific | 输出的浮点数按科学表示法表示 |
showpos | 输出若为正数,也要显示其前面的+号 |
showbase | 显示数制标志 |
showpoint | 输出浮点数的小数部分为0也显示小数点 |
oct | 将整数按照8进制输出 |
dec | 将整数按照10进制输出 |
hex | 将整数按照16进制输出 |
setbase | 设置整数的进制(8,10,16) |
setw | 设置输出字段宽度 |
setprecision | 设置浮点数的有效位数 |
setfill | 设置字符填充 |
具体演示如下:
头部文件要加上#inlude <iomanip>:
#include <iostream>
#include <iomanip>
using namespace std;
1.left+setw:
int a = -1234321;
cout << setw(20)<<a << endl;
cout <<setw(20)<< left << a << endl;
这里使用setw(20)来指定输出数据段的宽度为20,结果如下:
可以看到,在指定输出宽度后,数据是默认右对齐的,使用left控制符后,输出变成左对齐。
2.right+stew:
int a = -1234321;
cout << setw(20)<<a << endl;
cout <<setw(20)<< right << a << endl;
结果如下:
说明C++在指定输出宽度后确实是默认右对齐的。
3.internal+stew:
int a = -1234321;
cout << setw(20)<<a << endl;
cout <<setw(20)<< internal << a << endl;
结果如下:
内部对齐就是符号左对齐,而数字右对齐。
4.boolalpha:
cout << (2 > 1)<<endl;
cout << (2 < 1) << endl;
cout << boolalpha << (2 > 1) << endl;
cout << boolalpha << (2 < 1) << endl;
结果如下:
5.fixed:
double a = 23.45;
cout << a << endl;
cout << fixed << a << endl;
结果如下:
6. scientific:
double a = 23.45;
cout << a << endl;
cout << scientific << a << endl;
结果如下:
7.showpos:
double a = 23.45;
cout << a << endl;
cout << showpos << a << endl;
结果如下:
8.showbase+setbase:
int a = 23;
cout << a << endl;
cout << setbase(8) << showbase << a << endl;
cout << setbase(10) << showbase << a << endl;
cout << setbase(16) << showbase << a << endl;
结果如下:
10进制是默认的,不显示进制标志。
9.showpoint:
double a = 23;
cout << a << endl;
cout << showpoint << a << endl;
结果如下:
10. oct+dec+hex:
int a = 100;
cout << a << endl;
cout << oct << a << endl;
cout << dec << a << endl;
cout << hex << a << endl;
结果如下:
100的八进制数为144,十六进制数为64。
11.setprecision和fixed+setprecision和scientific+setprecision:
double a = 23.45;
cout << a << endl;
cout << setprecision(4) << a << endl;
cout << fixed << setprecision(4) << a << endl;
cout << scientific << setprecision(4) << a << endl;
结果如下:
setprecision(4)表示保留4位有效数字,而fixed+setprecision(4)表示小数位保留4位有效数字,而scientific+setprecision(4)则表示科学表示法中的底数的小数位保留4位有效数字。
12.setfill+setw:
cout << 66 << 88 << endl;
cout << setw(8) << setfill('@') << 66 << 88 << endl;
cout << setw(8) << 66 << 88 << setfill('@') << endl;
结果如下:
必须设置好输出字段宽度,才能进行填充,且不管填充操作是前是后,都默认为左填充。