有没有办法强制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
格式说明符中,可以使用精度参数以指定字符串中的最大字符数。 In C++,但是,您可以使用子字符串运算符:
std::cout << foo.substr(3) << foo.substr(0, foo.size() - 3) << std::endl;
(当然,对于第一个,您也可以使用 foo.c_str() + 3
。