1、setw
setw默认右对齐,可以用来控制输出间隔
cout<<'s'<<setw(8)<<'a'<<endl;
setw只对紧跟其后的输出起作用,上面代码的运行结果应该是
s a
中间7个空格,因为a占了1个空格
如果输出长度超过setw括号内规定的长度,则按原长度输出
setw默认填充空格,不过可以配合setfill实现自定义填充
如
cout<<'s'<<setfill('*')<<setw(8)<<'a'<<endl;
输出结果为
s*******a
虽然setw默认右对齐,不过也可以使用std::left实现左对齐
cout<<std::left<<'s'<<setfill('*')<<setw(8)<<'a'<<endl;
2、hex,oct,dec
hex是16进制
dec是10进制
oct是8进制
3、setiosflags
setiosflags 是包含在命名空间 iomanip 中的C++ 操作符,该操作符的作用是执行由有参数指定
cout<<setiosflags(ios::left);
的作用是实现左对齐
#include<iostream>
using namespace std;
#include<iomanip>
int main()
{
int a=20,b=18,c=24;
cout<<"123456789012345678901234567890"<<"\n";
cout<<dec<<setw(10)<<a<<setw(10)<<b<<setw(10)<<c<<endl;
cout<<setiosflags(ios::left);
cout<<hex<<a<<setw(10)<<b<<setw(10)<<c<<endl;
cout<<hex<<setw(10)<<a<<setw(10)<<b<<setw(10)<<c<<endl;
cout<<oct<<setw(10)<<a<<setw(10)<<b<<setw(10)<<c<<endl;
cout<<resetiosflags(ios::left);
cout<<dec<<setw(10)<<a<<setw(10)<<b<<setw(10)<<c<<endl;
}
运行结果是