【问题标题】:Fill stringstream with single character用单个字符填充字符串流
【发布时间】:2020-04-10 14:08:53
【问题描述】:

如何创建一个固定长度的字符串流,填充单个字符?

期望的输出:

[xxxxxxxxxx]

我试过了:

#include <iostream>
#include <iomanip>
using namespace std;

int main () {
  stringstream ss;
  ss << setfill('x') << setw(10);
  cout << "[" << ss.str() << "]\n";

  return 0;
}

输出:

[]

如果我在设置宽度和填充后向流中添加任何内容,我会得到填充流,这就是我要寻找的:

  ss << setfill('x') << setw(10) << "B";

输出:

[xxxxxxxxxB]

但我想要一个流只用 x 填充流有没有什么方法可以在不需要添加值的情况下获得填充流?

【问题讨论】:

    标签: c++ formatting stringstream


    【解决方案1】:

    setwsetfill只是用来设置你的流的宽度和填充参数,所以是正常的

      ss << setfill('x') << setw(10);
    

    不起作用(你不输出任何东西)。

    你可能想做类似的事情

      ss << setfill('x') << setw(10) << 'x';
    

    这给了

    [xxxxxxxxxx]
    

    如你所愿。

    【讨论】:

    • 我考虑过这个,但它似乎有点 hacky。不过,感谢您的建议。
    【解决方案2】:

    您可以像这样使用适当的字符串constructor 来填充流

    ss << std::string(10, 'x');
    

    【讨论】:

    • 是的,这将完成我所需要的。感谢您提供好的解决方法。
    • @KennethHuebsch 当然可以。如果答案对您有用,请继续接受它。见this
    猜你喜欢
    • 2019-06-12
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多