在c ++中填充并分配std :: string

时间:2018-01-01 15:07:28

标签: c++ padding

新手问题。如何在c ++中填充std::string,然后将填充结果分配给变量?

我正在查看setfillsetw,但我看到的所有示例都会使用std::cout输出结果。例如:

std::cout << std::left << std::setfill('0') << std::setw(12) << 123;

我想要的是:

auto padded {std::left << std::setfill('0') << std::setw(12) << 123};

是否有std函数来实现这一目标,还是我必须自己动手?

3 个答案:

答案 0 :(得分:4)

您可以使用与{std :: cout相同的格式说明符ostringstream

 std::ostringstream ss;
 ss << std::left << std::setfill('0') << std::setw(12) << 123;

然后

auto padded{ ss.str() };

答案 1 :(得分:2)

可以使用可用的字符串操作,例如insert

#include <iostream>
#include <string>

int main()
{
    std::string s = "123";
    s.insert(0, 12 - s.length(), '0');

    std::cout << s << std::endl;
    return 0;
}

https://ideone.com/ZhG00V

答案 2 :(得分:0)

一般情况下,您可以使用std::stringstream并利用所有&#34;实用程序&#34;流但是&#34; export&#34;为std::string

std::stringstream aSs;
aSs << std::left << std::setfill('0') << std::setw(12) << 123;
aSs.str();  // <--  get as std::string

Live Demo