setw(int n)只是对直接跟在<<后的输出数据起作用,而在之后的<<需要在之前再一次使用setw;(Sets the number of characters to be used as the field width for the next insertion operation.)
n是在输出时分配了n个字符的输出宽度,然后默认的是在n个字符宽度中右对齐输出,可以使用setiosflags(ios::left)设置为左对齐输出,可以使用setfill('char x')使用x来填充空下的空格;示例如下。(cplusplus.com在其中直接搜索iomanip之后就可以查到在这个头文件中包含的所有成员函数)
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << setw(10) << setiosflags(ios::left) <<setfill('*') << 10 << endl;
cout << setw(10) << setiosflags(ios::right) <<setfill('*') << 10 << endl;
cout << setw(10) << setfill('*') << 10 << endl;
int a=10;
int b=20;
cout.setf(ios::right,ios::adjustfield);
cout.fill('0');
cout << setw(5) << a <<endl;
cout << setw(5) << b << endl;
return 0;
}