setw()函数仅对<<后的输出数据有效
setfill()函数则是跟在setw后面填充相应的空位(默认是空格)
1)
例如:
#include <iostream>
using namespace std;
#include <iomanip>
int n;
extern void display();
int main()
{
cout <<123<< setw(15) << setfill('#') << 123;
system("pause");
}
运行结果为:123############123
即用#填充位数加上后面的数字组成15位。可以理解为, 输出格式为 三部分组成:setw(),setfill(),xx||"xx"。
*注:setfill("#”)跟上setw()函数#才有输出结果。且setw()只能一次有效,setfill则永久有效,直到遇到下一个setfill();
例:
将上面输出语句改为:
cout <<setfill("*")<< 123 << setw(15) << setfill('#') << 123 << setw(10) << 456;
运行结果为:123############123#######456 此时并没有*输出。
2)
cout << setw(10) << setfill('#') <<left<< 123 << endl;
运行结果为:123####### (个人理解,输出左对齐123的优先级高于输出填充部分,当然这只是相对于只有一行用于对齐的代码)
若改为
cout << setw(10) << setfill('#') <<right<< 123 << endl;
则结果为:#######123