用setw截断

时间:2014-12-09 13:43:33

标签: c++ stream truncate iomanip setw

有没有办法可以强制setw截断?

说我想得到输出:

  blah blah blee le
  bu blah blah blee

有没有办法让这项工作:

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

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

2 个答案:

答案 0 :(得分:1)

不,不是真的。

但是,您可以切换到此示例的无格式输出:

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

答案 1 :(得分:1)

不直接。

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

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

(当然,对于第一个,您也可以使用foo.c_str() + 3。)