2012-02-24 2 views
0

В библиотеке времени времени увеличения есть функция утилиты для преобразования коротких строк месяца (например, Jan, Feb, Mar, Apr) для повышения :: gregorian :: greg_month type? Документация для библиотеки невелика, и я ничего не вижу в заголовках.Преобразование строки в boost :: gregorian :: greg_month

ответ

1

А Hacky работа вокруг может быть:

#include <iostream> 
#include <boost/date_time/gregorian/gregorian.hpp> 

int main(void) 
{ 
    auto ptr = boost::gregorian::greg_month::get_month_map_ptr(); 

    if (ptr) 
    { 
    auto it = ptr->begin(); 
    for(; it != ptr->end(); ++it) 
    { 
     std::cout << it->first << " " << it->second << '\n'; 
    } 
    } 
} 

Эта карта содержит отображение между всеми коротких/длинных имен и короткий необходимо для создания экземпляра greg_month. Просто нужно создать небольшую обертку вокруг него ...

за открытие Грэма, есть удобная функция, которая оборачивает это уже boost::date_time::month_str_to_ushort<>

+0

Просто найти функцию уже wrappin это вверх: повышение :: дата_время :: month_str_to_ushort , Спасибо за помощь! – Graeme

+0

@Graeme, ага - это должно было быть где-то - это довольно тривиальная функция ... :) – Nim

0

Да, есть моменты времени дат форматирования, которые можно использовать для создания локалей и ввода в потоки.

Остерегайтесь, что если вы собираетесь распечатать или проанализировать большое количество дат и времени, вы не создадите грань и локаль для каждого из них, которые вы разбираете.

Посмотрите here на документацию по дате ввода. Некоторые из их примеров использовать короткие названия месяцев, которые, как представляется, %b как его format specifier