我试图以这种方式将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;
}

但不幸的是,我只收到“无日期时间”。我做错了什么?有没有更简单的方法可以将字符串转换为boost::gregorian:date这样流行的形式?

最佳答案



您会得到“非日期时间”,因为那不是有效日期:1922年不是a年,因此2月只有28天。

如果我将您的代码更改为1922-02-281924-02-29这样的有效日期,则您的代码可以正常工作。


boost::gregorian::date d = boost::gregorian::from_string(s_date);

关于c++ - boost::gregorian::date from std::string,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17196923/

10-12 20:43