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

C++ 使用Boost将字符串YYYYMMDD格式化为YYYY.MM.DD,c++,boost,string-formatting,C++,Boost,String Formatting,我有一个std::string,比如20040531,我想将其格式化为2004.05.31 除了在各自的位置直接执行std::insert之外,还有更好的方法使用Boost来执行吗 另外,我不能使用其他Boost调用来获取日期/时间,因为这个字符串是通过自定义API返回的。因此,这个问题被简化为基本的字符串格式,听起来可能不太令人兴奋,但我正在尝试学习Boost。您可以使用 #包括 #包括“boost/format.hpp” #包括 int main() { 标准::字符串a(“20040531

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

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

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

您可以使用

#包括
#包括“boost/format.hpp”
#包括
int main()
{
标准::字符串a(“20040531”);

std::cout干杯!我不得不冒着显得愚蠢的风险问不可避免的问题。是否有教程解释如何使用boost::format,我确实搜索了它,但找不到任何相关的内容。其中包含了很好的解释和许多示例。为什么要使用boost?为什么不直接使用
a.substr(0,4)+“+a.substr(4,2)+”+a.substr(6,2)
?没有充分的理由,只是尝试以不同的方式做相同的事情。
#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);
}
#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();
}