使用Boost将字符串YYYYMMDD格式化为YYYY.MM.DD

时间:2011-11-21 18:34:38

标签: c++ boost string-formatting

我有一个std::string,例如20040531,我想将其格式化为2004.05.31

除了在各个位置执行std::insert的直接方式之外,使用Boost还有更好的方法吗?

PS。我无法使用其他Boost调用来获取日期/时间,因为此字符串是通过自定义API返回的。因此,这个问题被简化为基本的字符串格式化,这可能听起来并不令人兴奋,但我正在努力学习Boost。

1 个答案:

答案 0 :(得分:3)

您可以使用boost::format ...

#include <string> 
#include "boost/format.hpp"
#include <iostream>

int main()
{
    std::string a("20040531");
    std::cout << boost::format("%1%.%2%.%3%") 
                    % a.substr(0,4) % a.substr(4,2) % a.substr(6,2);
}

您特别询问使用Boost执行此操作,但如果您想在C ++中执行此操作而不引入对Boost的依赖,那么您可以使用流来实现同样的目的:

#include <sstream>
#include <string>
#include <iostream>

int main()
{
    std::stringstream s;
    std::string a("20040531");
    s << a.substr(0,4) << '.' << a.substr(4,2) << '.' << a.substr(6,2);
    std::cout << s.str();
}