有没有办法可以强制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;
答案 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
。)