曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4997|回复: 0
打印 上一主题 下一主题

setw() 函数 -- 设置输出宽度

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2011-6-19 15:16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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);
这样的设置只对下一次的输出有效,而不会对它之下的输出都有效。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-18 01:55 , Processed in 0.112337 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表