iomanip.h是I/O流控制头文件,就像C里面的格式化输出一样,主要是对cin和cout操纵的算子。需要注意C++中替代iomanip.h并不是cipmanip,而是直接iomanip,与cmath,cstdio不同。
头文件其实很好记忆,io代表输入输出,manip是manipulator(操纵器,操纵算子)的缩写。
1 笔试必掌握
1.1 设置域宽setw(N)
当我们需要保证输出宽度为N,预设宽度,如下:
cout<<setw(5)<<255<<endl; //运行结果:空格空格255,一共5个字宽
1.2 流输出八进制,十六进制
dec 置基数为10 相当于”%d”
hex 置基数为16 相当于”%X”
oct 置基数为8 相当于”%o”
例如输出一个数的16进制,如下:
cout<<hex<<255<<endl; //运行结果为:ff
补充说明一下,如果需要流输出二进制,则包含bitset.h头文件,调用哪个bitset()函数完成十进制输出为二进制,如下:
#include<bitset.h>
cout<<bitset<8>(255)<<endl; //运行结果为:11111111,8表示决定保留的位数。
1.3 填充字符setfill(char c)
setfill就是在预设宽度中,如果已存在没有用完的宽度大小,则用字符c填充。如下:
cout<<setfill('0')<<setw(5)<<255<<endl; //运行结果为:00255。
1.4 进制转换setbase(int n)
将某一个十进制数转换为一个n进制的数,实际上只能是8和16进制,如果是2~36任意进制还是使用stdlib.h头文件中itoa函数吧,使用如下:
cout<<setbase(8)<<setw(5)<<255<<endl; //运行结果为: 377
1.5 控制输出流的精度setprecision(int n)
使用setprecision(int n)可控制输出流显示浮点数的数字个数(包括整数部分)。C++默认的流输出数值有效位是6。使用如下:
cout<<setprecision(3)<<22.123<<endl; //结果为:22.1
cout<<setprecision(8)<<22.123<<endl; //结果为:22.123,比原字符长不会补零!