Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 如何使用boost将自定义字符串转换为ptime_C++11_Boost - Fatal编程技术网

C++11 如何使用boost将自定义字符串转换为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

我有一个字符串“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%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