曲径通幽论坛

标题: setw() 函数 -- 设置输出宽度 [打印本页]

作者: beyes    时间: 2011-6-19 15:16
标题: setw() 函数 -- 设置输出宽度
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);
这样的设置只对下一次的输出有效,而不会对它之下的输出都有效。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2