Dej*_*jwi 1 c++ boost-date-time
我试图以这种方式将std :: string转换为boost :: gregorian :: date:
#include <iostream>
#include "boost/date_time/gregorian/gregorian.hpp"
int main(int argc, char *argv[])
{
std::string s_date = "1922-02-29";
std::stringstream ss(s_date);
boost::gregorian::date_input_facet *df = new boost::gregorian::date_input_facet("%Y-%m-%d");
ss.imbue(std::locale(ss.getloc(), df));
date d;
ss>>d;
std::cout<<d<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我只收到了"非约会时间".我做错了什么?有没有更简单的方法将这种流行形式的字符串转换为boost :: gregorian:date?
我做错了什么?
你得到"不是约会时间",因为这不是一个有效的日期:1922年不是闰年,所以2月只有28天.
如果我将代码更改为有效日期(如1922-02-28或),则代码将按预期工作1924-02-29.
有没有更简单的方法将这种流行形式的字符串转换为boost :: gregorian:date?
boost::gregorian::date d = boost::gregorian::from_string(s_date);
Run Code Online (Sandbox Code Playgroud)