有没有办法可以强制setw
截断?
假设我想得到输出:
呜呜呜呜呜呜呜呜呜呜呜呜
呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜
有没有办法使这项工作:
string foo{"bu blah blah blee le"};
cout << setw(foo.size() - 3) << foo.data() + 3 << setw(foo.size() - 3) << foo << endl;
不,不是。
但是,您可以在此示例中切换到未格式化的输出:
assert(foo.size() > 3);
cout.write(&foo[3], foo.size() - 3);
cout.write(&foo[0], foo.size() - 3);
不是直接的。
在printf
格式说明符中,精度参数可用于指定字符串中的最大字符数。但是,在 C++ 中,您使用子字符串运算符:
std::cout << foo.substr(3) << foo.substr(0, foo.size() - 3) << std::endl;
(当然,首先,您也可以使用foo.c_str() + 3
.)