2010-09-07 5 views
3

У меня есть вектор строку даты в от «дд-MMM-YYYY», так, например дата сегодняшней будет:C++ формат даты подталкивание

std::string today("07-Sep-2010"); 

Я хотел бы использовать класс даты в увеличить, но для создания даты объекта в конструктор даты должна называться следующим образом:

date test(2010,Sep,07); 

есть ли простой/элегантный способ передачи даты в формате «дд-ммм-гггг»? Моя первая мысль заключалась в том, чтобы использовать substr, а затем бросить его? Но я читал, что есть также возможность использования «фасет даты» ?

Спасибо!

ответ

2

Существует встроенный анализатор для этой формы даты в самом Boost, проверить документы здесь:

http://www.boost.org/doc/libs/1_44_0/doc/html/date_time/date_time_io.html#date_time.io_objects

date_type parse_date (...) Параметров: string_type входного формата string_type special_values_parser Анализ даты с данного ввода с использованием заданного формата.

string inp("2005-Apr-15"); 
string format("%Y-%b-%d"); 
date d; 
d = parser.parse_date(inp, 
         format, 
         svp); 
// d == 2005-Apr-15 

с inp с учетом ваших потребностей.

+2

Что представляет собой третий аргумент 'svp'. Также должен ли вызов быть format_date_parser.parse_date (inp, format, svp)? – Wawel100

3
include "boost/date_time/gregorian/parsers.hpp" 
date test = boost::gregorian::from_us_string("07-Sep-2010") 
+0

Спасибо! Хотя это должно быть from_uk_string: // из строки с разделителями даты, где с порядком день-месяц-год, например: 25-1-2002 или 25-янв-2003 (также принимается полное название месяца). date from_uk_string (std :: string s); – Wawel100

+0

Я получаю несколько предупреждений, говорящих мне: «Функциональный вызов с параметрами, которые могут быть небезопасными», есть ли способ избежать этого? – Wawel100

+0

Предупреждение для некоторых внутренних вещей в библиотеке # предупреждение pragma (отключено: 4996) – adrianm

Смежные вопросы