C++11 如何使用boost将自定义字符串转换为ptime
我有一个字符串“2018Jan23T181138.65498648”,我需要将其转换为ptime。我使用了下面的代码,但似乎它不工作。你知道我做错了什么吗C++11 如何使用boost将自定义字符串转换为ptime,c++11,boost,C++11,Boost,我有一个字符串“2018Jan23T181138.65498648”,我需要将其转换为ptime。我使用了下面的代码,但似乎它不工作。你知道我做错了什么吗 boost::posix_time::ptime pt; std::istringstream is("2018Jan23T181138.65498648"); is.imbue(std::locale(std::locale::classic(), new boost::posix_time::time_input_facet("%Y
boost::posix_time::ptime pt;
std::istringstream is("2018Jan23T181138.65498648");
is.imbue(std::locale(std::locale::classic(), new boost::posix_time::time_input_facet("%Y%m%dT%H%M%S.%f")));
is >> pt;
std::cout << pt;
boost::posix_time::ptime pt;
标准::istringstream为(“2018Jan23T181138.65498648”);
is.imbue(std::locale(std::locale::classic(),新的boost::posix_time::time_input_facet(“%Y%m%dT%H%m%S.%f”);
is>>pt;
std::cout您至少需要匹配格式字符串以反映输入格式
“Jan”不是%Y%m%d
的有效匹配项(应该是20180123
)。同样,%S.%f
是一个格式字符串,可能用于格式化,但要用分数解析秒,请显示使用%S
#include <boost/date_time.hpp>
#include <boost/date_time/posix_time/posix_time_io.hpp>
#include <sstream>
#include <iostream>
int main() {
boost::posix_time::ptime pt;
std::istringstream is("2018Jan23T181138.65498648");
is.imbue(std::locale(std::locale::classic(), new boost::posix_time::time_input_facet("%Y%b%dT%H%M%s")));
if (is >> pt) {
std::cout << pt << "\n";
} else {
std::cout << "unparsed\n";
}
}
⑨还没有测试它的输出格式谢谢您的解决方案。我们已经这样做了,并且工作得很好:)干杯,还有
2018-Jan-23 18:11:38.654986