std::setw()
设置所有输出的最小字段宽度,并且std::setprecision()
能够影响浮点数,但是有一种方法可以设置std::string
的最大字段宽度,以实现结果与以下printf()
格式说明符相同:%10.10s
我知道boost::format
可能能够做到这一点,但是我正在寻找一种严格的解决方案,该解决方案仅是C ++标准,没有第三方软件。
答案 0 :(得分:3)
没有使用C ++流执行此操作的内置方法。一种方法是使用std::string_view
来获取想要的切片
#include <iostream>
#include <string_view>
std::string_view print_max(std::string_view sv, std::size_t width)
{
return sv.substr(0, width);
}
int main()
{
std::cout << print_max("0123456789", 3) << "\n";
std::cout << print_max("0123456789", 5) << "\n";
std::cout << print_max("0123456789", 8) << "\n";
std::cout << print_max("0123456789", 20);
}
输出:
012
01234
01234567
0123456789