我有std::string
如20040531
,我想将其格式设置为2004.05.31
。使用Boost将字符串YYYYMMDD格式化为YYYY.MM.DD
除了在各自的位置做一个std::insert
的直接方式,还有更好的方法来使用Boost来做到这一点吗?
PS。我无法使用其他Boost调用来获取日期/时间,因为此字符串是通过自定义API返回的。所以这个问题被简化为基本的字符串格式,这可能听起来并不令人兴奋,但我正在学习Boost。
我有std::string
如20040531
,我想将其格式设置为2004.05.31
。使用Boost将字符串YYYYMMDD格式化为YYYY.MM.DD
除了在各自的位置做一个std::insert
的直接方式,还有更好的方法来使用Boost来做到这一点吗?
PS。我无法使用其他Boost调用来获取日期/时间,因为此字符串是通过自定义API返回的。所以这个问题被简化为基本的字符串格式,这可能听起来并不令人兴奋,但我正在学习Boost。
你可以使用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++不引入升压的依赖,那么你可以只使用一个流达成同样的目的:
#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();
}
干杯!我不得不提出不可避免的风险,表现出愚蠢。有没有教程,解释“如何”使用boost ::格式,我确实搜索它,但无法获得任何相关的。 –
[我发布到文档的链接](http://www.boost.org/doc/libs/1_48_0/libs/format/doc/format.html)包含了一个很好的解释和许多例子。 – razlebe
为什么使用Boost?为什么不只是为什么不只是'a.substr(0,4)+“。” + a.substr(4,2)+“。” + a.substr(6,2)'? –
没有很好的理由,只是试图以不同的方式做同样的事情。 –