我有一个std::string
,例如20040531
,我想将其格式化为2004.05.31
。
除了在各个位置执行std::insert
的直接方式之外,使用Boost还有更好的方法吗?
PS。我无法使用其他Boost调用来获取日期/时间,因为此字符串是通过自定义API返回的。因此,这个问题被简化为基本的字符串格式化,这可能听起来并不令人兴奋,但我正在努力学习Boost。
答案 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();
}