使用 setw 截断

Truncating with setw

本文关键字:截断 setw 使用      更新时间:2023-10-16

有没有办法强制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