Как преобразовать std :: string в boost :: gregorian :: date?

Я пытаюсь преобразовать std :: string в boost :: gregorian :: date вот так:

using namespace boost::gregorian;

std::string str = "1 Mar 2012";
std::stringstream ss(str);
date_input_facet *df = new date_input_facet("%e %b %Y");
ss.imbue(std::locale(ss.getloc(), df));
date d;

ss >> d;  //conversion fails to not-a-date-time

std::cout << "'" << d << "'" << std::endl;  //'not-a-date-time'

Но если строка содержит «01 марта 2012 г.», преобразование выполнено успешно.

Как преобразовать такие строки, как «1 марта 2012», в эквивалентную boost :: gregorian :: date ?

8
задан Niall C. 2 March 2012 в 02:33
поделиться