【问题标题】:Truncating with setw用 setw 截断
【发布时间】:2015-02-07 10:18:45
【问题描述】:

有没有办法强制setw 截断?

说我想得到输出:

呸呸呸呸
呸呸呸呸

有没有办法让这个工作:

string foo{"bu blah blah blee le"};

cout << setw(foo.size() - 3) << foo.data() + 3 << setw(foo.size() - 3) << foo << endl;

【问题讨论】:

    标签: c++ stream truncate iomanip setw


    【解决方案1】:

    不直接。

    printf 格式说明符中,可以使用精度参数 指定字符串中的最大字符数。在 C++ 中, 但是,您使用子字符串运算符:

    std::cout << foo.substr(3) << foo.substr(0, foo.size() - 3) << std::endl;
    

    (当然,首先,你也可以使用foo.c_str() + 3。)

    【讨论】:

      【解决方案2】:

      不,不是。

      不过,您可以在此示例中切换到未格式化的输出:

      assert(foo.size() > 3);
      cout.write(&foo[3], foo.size() - 3);
      cout.write(&foo[0], foo.size() - 3);
      

      【讨论】:

        猜你喜欢
        • 2012-06-02
        • 2019-08-03
        • 2016-07-15
        • 2023-03-31
        • 2018-10-12
        • 2018-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多