一、头文件
width和fill为成员函数,在iostream中已声明
setw、setprecision、setiosflags等操纵符,在iomanip中
二、输出宽度及填充符
调整输出宽度,可通过在流中放入setw操纵符或调用width成员函数
setw和width仅影响紧随其后的域(endl不算)。但其他流格式选项保持有效直到发生改变,如fill或setfill
cout.fill('0'); //或cout<<setfill('0');
cout<<setw(6)<<"111";
cout.width(10);
cout<<endl<<"222"; //结果为图1
//改为cout<<"\n"<<"222"; 则结果为图2
输出结果:1. 2.
三、对齐方式
默认为右对齐,使用setiosflags(ios::left)改变
影响持久有效,直到使用resetiosflags重新恢复为止
cout<<setfill('*')<<setiosflags(ios::left);
cout<<setw(6)<<"111"<<endl;
cout.width(10);
cout<<""<<"222"<<endl;
cout<<resetiosflags(ios::right)<<333;
输出结果:
宽度为10的域输出为空,所以填充10个*
setiosflags的参数另有ios::fixed、ios::scientific(以定点格式、科学格式显示浮点数值)等
四、精度
若设置了ios::fixed或ios::scientific,则精度值确定了小数点之后的小数位数;若都未设置,则精度制确定了总的有效位数
浮点数输出精度默认值为6,如3466.9768显示为3499.98
可使用setprecision操纵符改变精度
影响持久有效
cout<<setprecision(4);
cout<<123456<<" "<<123.4<<endl; //不小于,不变
cout<<123.456<<" "<<12345.6<<endl;
输出结果:
若为整数或原本精度不小于设置精度,则不变
若精度缩小,则四舍五入,且若保留至整数位,则显示为科学计数法
五、进制
影响持久有效
cout<<dec<<26<<" "<<27<<" "<<175<<endl;
cout<<oct<<26<<" "<<27<<" "<<175<<endl;
cout<<hex<<26<<" "<<27<<" "<<175<<endl;
输出结果: