有什么方法可以强制setw截断吗?
假设我想得到输出:
诸如此类的 无谓的流血
有什么办法可以让这件事:
string foo{"bu blah blah blee le"};
cout << setw(foo.size() - 3) << foo.data() + 3 << setw(foo.size() - 3) << foo << endl;发布于 2014-12-09 13:51:33
不,不是真的。
但是,您可以切换到此示例的未格式化输出:
assert(foo.size() > 3);
cout.write(&foo[3], foo.size() - 3);
cout.write(&foo[0], foo.size() - 3);发布于 2014-12-09 13:59:01
不是直接的。
在printf格式说明符中,可以使用精度参数来指定字符串中的最大字符数。然而,在C++中,您使用子字符串运算符:
std::cout << foo.substr(3) << foo.substr(0, foo.size() - 3) << std::endl;(当然,对于第一个问题,您也可以使用foo.c_str() + 3。)
https://stackoverflow.com/questions/27380376
复制相似问题