boost::date_time::period_parser — Not a facet, but a class used to specify and control period parsing.
Synopsis
// In header: <boost/date_time/period_parser.hpp>
template<typename date_type,typename CharT>classperiod_parser{public:// typestypedefstd::basic_string<CharT>string_type;typedefCharTchar_type;typedefstd::istreambuf_iterator<CharT>stream_itr_type;typedefstring_parse_tree<CharT>parse_tree_type;typedef parse_tree_type::parse_match_result_type match_results;typedefstd::vector<std::basic_string<CharT>>collection_type;enumperiod_range_option { AS_OPEN_RANGE, AS_CLOSED_RANGE };// construct/copy/destructperiod_parser(period_range_option=AS_CLOSED_RANGE,constchar_type*const=default_period_separator,constchar_type*const=default_period_start_delimeter,constchar_type*const=default_period_open_range_end_delimeter,constchar_type*const=default_period_closed_range_end_delimeter);period_parser(constperiod_parser<date_type,CharT>&);// public member functionsperiod_range_optionrange_option()const;voidrange_option(period_range_option);collection_typedelimiter_strings()const;voiddelimiter_strings(conststring_type&,conststring_type&,conststring_type&,conststring_type&);template<typename period_type,typename duration_type,typename facet_type>period_typeget_period(stream_itr_type&,stream_itr_type&,std::ios_base&,constperiod_type&,constduration_type&,constfacet_type&)const;// private member functionsvoidconsume_delim(stream_itr_type&,stream_itr_type&,conststring_type&)const;// public data membersstaticconstchar_typedefault_period_separator;staticconstchar_typedefault_period_start_delimeter;staticconstchar_typedefault_period_open_range_end_delimeter;staticconstchar_typedefault_period_closed_range_end_delimeter;};
Description
Предоставляет настройки для следующего:
period_separator & #8211; по умолчанию '/
period_open_start_delimeter & #8211; по умолчанию
period_open_range_end_delimeter – default ')
period_closed_range_end_delimeter & #8211; по умолчанию ']
display_as_open_range, display_as_closed_range – по умолчанию closed_range
Для типичного периода date_period содержимое входного потока будет
>Общий код для анализа периода – независимо от типа периода.
Этот общий код будет анализировать любой период, используя грань, чтобы получить «элементы». Например, в случае date_period элементами будут экземпляры даты, которые будут разбираться в соответствии с установкой в пройденном граневом параметре.
Шаги для разбора периода всегда одинаковы:
потребляют начальный разграничитель
элемент старта
Потребляйте разделитель
получить либо последний, либо конечный элемент в зависимости от настроек диапазона
потреблять конечный делиметр в зависимости от настроек диапазона
Таким образом, для типичного периода даты содержимое входного потока может выглядеть следующим образом:
>бросает ios_base::провал, если разграничитель и парсированные данные не совпадают
Статья Class template period_parser раздела The Boost C++ Libraries BoostBook Documentation Subset Library Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.