头文件 #include <iomanip>
io 是输入输出,manip 是manipulator 的缩写(操作器)。
1、setw( n ) 设域宽为n个字符 ,
默认是右对齐(如果不够左面补充空格),
若想左对齐,在cout语句 前写一句 cout << left;(后面的所有cout都默认左对齐)
若果是小数的话是小数点也计算一个宽度,
如果本来长度大于n,那么就无效,不会进行切割。
cout << setw(3) << a << endl;
cout << left;
cout << setw(3) << a << endl
2、setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充。
cout << setfill('*') << setw(4) << a << endl
假设 a 为1, 因为默认是右对齐,所以左面补上 * ,输出 :***1 .
3、setbase(int n) : 将数字转换为 n 进制(好像只能8 10 16)。
cout << setbase(8) << 9 << endl;
输出 9 的 8进制,
4、setprecision(n)和 setiosflags(ios::fixed) 可控制输出流显示浮点数的数字个数,
对小数的舍弃并不遵循四舍五入的规则。。。..
单独一个setprecision(n)控制的是输出的有效数字。是有效数字个数!!!,不是小数点后的位数
注意; 当保留2位有效数字时数, 输入 1.995时因为进位 成了2.0,
,但是不会输出2.00,会输出2, 自动舍去小数点后面的0
所以要配合之 setiosflags(ios::showpoint)(放它前面) 强制保留小数点 一起用,固定小数输出..
cout <<setiosflags(ios::showpoint) << setprecision(2) << a <<endl;
如果要控制小数点的位数,不能用setiosflags(ios::showpoint),,而要用setiosflags(ios::fixed)~~~~~~
cout <<setiosflags(ios::fixed) << setprecision(2) << a <<endl;
setiosflags(ios::fixed),使得setprecision(2) 控制的位数从小数点后开始计算,不会舍去0.。。