setw(int n)的作用,一般理解成是用来控制输出间隔的,但这只是表象,实际上是用来预设输出宽度的。setw默认右对齐,其余部分自动补空格。还有一些别的特性,直接看代码会更直观,代码:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << setw(6) << 10 << endl; //输出1
cout << setw(6) << setiosflags(ios::left) <<setfill('*') << 10 << endl; //输出2
cout << setw(6) << setiosflags(ios::right) <<setfill('*') << 10 << endl; //输出3
cout << setw(6) << setfill('*') << 10 << endl; //输出4
int a=10;
int b=20;
cout.setf(ios::right,ios::adjustfield);
cout.fill('0');
cout << setw(7) << a <<endl; //输出5
cout << setw(8) << b << endl; //输出6
return 0;
}
运行结果:
10
10****
****10
****10
0000010
00000020
那么问题来了,如果预设宽度不足,怎么办?那么以实际输出为准,请看如下代码:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << setw(4) << 100 <<endl; //输出1
cout << setw(4) << 1000 << endl; //输出2
cout << setw(4) << 10000 << endl; //输出3
return 0;
}
运行结果:
100
1000
10000