setw() 函数可以用来设置输出宽度。使用该函数前需要包含 #include <iomanip>,它只带有一个整型参数,表示宽度。
测试程序:
[C++] 纯文本查看 复制代码 #include <iostream>
#include <iomanip>
using namespace std;
int main(void)
{
cout << setw(3) << '-' << setw(2) << 'k' << setw(2) << '-' << endl;
return 0;
}
运行输出:[beyes@beyes setw]$ ./setw
- k - 注意上面 setw() 设置的输出宽度,setw(3) 设置完后,接着输出字符 '-' ,'-' 之前有 2 个空格,包括自己共 3 个字符的宽度。同样,接着设置 setw(2),然后输出 'k' 字符,此时 'k' 前面有 1 个空格,包括 'k' 本身共占 2 个字符宽度。
默认情况下,经过 setw() 设置宽度是用 空格 来填充的,也可以使用其它字符来填充(padding),方法是使用 std::cout.fill() 来设置,见下面测试代码:
[C++] 纯文本查看 复制代码 #include <iostream>
using namespace std;
int main(void)
{
cout << 100 << endl;
cout.width(5);
cout << 100 << endl;
cout.fill('x');
cout.width(15);
cout << right << 100 << endl;
cout << left << 100 << endl;
return 0;
}
运行输出:[beyes@beyes setw]$ ./setw
100
100
xxxxxxxxxxxx100
100 在上面代码中,cout.width() 用来设置输出宽度,它和 setw() 的道理一样。
在输出第 2 行里,100 面前有 2 个空格,共 5 个字符宽度(cout.width(5);)。
cout.fill('x'); 函数里,用 'x' 字母来填充宽度中空白。在 cout << right << 100 << endl; 中的 right 控制 100 在填充符号的右边。
注意最后一行的输出,只有 100,这说明像:
cout.fill('x');
cout.width(15);
这样的设置只对下一次的输出有效,而不会对它之下的输出都有效。 |