【问题标题】: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);