Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Class template period_parser

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Library Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class template period_parser

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> 
class period_parser {
public:
  // types
  typedef std::basic_string< CharT >                string_type;    
  typedef CharT                                     char_type;      
  typedef std::istreambuf_iterator< CharT >         stream_itr_type;
  typedef string_parse_tree< CharT >                parse_tree_type;
  typedef parse_tree_type::parse_match_result_type  match_results;  
  typedef std::vector< std::basic_string< CharT > > collection_type;
  enum period_range_option { AS_OPEN_RANGE, AS_CLOSED_RANGE };
  // construct/copy/destruct
  period_parser(period_range_option = AS_CLOSED_RANGE, 
                const char_type *const = default_period_separator, 
                const char_type *const = default_period_start_delimeter, 
                const char_type *const = default_period_open_range_end_delimeter, 
                const char_type *const = default_period_closed_range_end_delimeter);
  period_parser(const period_parser< date_type, CharT > &);
  // public member functions
  period_range_option range_option() const;
  void range_option(period_range_option);
  collection_type delimiter_strings() const;
  void delimiter_strings(const string_type &, const string_type &, 
                         const string_type &, const string_type &);
  template<typename period_type, typename duration_type, typename facet_type> 
    period_type get_period(stream_itr_type &, stream_itr_type &, 
                           std::ios_base &, const period_type &, 
                           const duration_type &, const facet_type &) const;
  // private member functions
  void consume_delim(stream_itr_type &, stream_itr_type &, 
                     const string_type &) const;
  // public data members
  static const char_type default_period_separator;
  static const char_type default_period_start_delimeter;
  static const char_type default_period_open_range_end_delimeter;
  static const char_type default_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 содержимое входного потока будет

[2004-Jan-04/2004-Feb-01]

где формат даты контролируется гранью даты

period_parser public construct/copy/destruct

  1. <
    period_parser(period_range_optionrange_opt=AS_CLOSED_RANGE,
                 constchar_type*constperiod_separator=default_period_separator,
                 constchar_type*constperiod_start_delimeter=default_period_start_delimeter,
                 constchar_type*constperiod_open_range_end_delimeter=default_period_open_range_end_delimeter,
                 constchar_type*constperiod_closed_range_end_delimeter=default_period_closed_range_end_delimeter);
    >Конструктор, который устанавливает параметры парсера периода.
  2. <
    period_parser(constperiod_parser<date_type,CharT>&p_parser);
    >

period_parser public member functions

  1. <
    period_range_optionrange_option()const;
    >
  2. <
    voidrange_option(period_range_optionoption);
    >
  3. <
    collection_typedelimiter_strings()const;
    >
  4. <
    voiddelimiter_strings(conststring_type&separator,
                          conststring_type&start_delim,
                          conststring_type&open_end_delim,
                          conststring_type&closed_end_delim);
    >
  5. <
    template<typenameperiod_type,typenameduration_type,typenamefacet_type>
     period_typeget_period(stream_itr_type&sitr,stream_itr_type&stream_end,
                            std::ios_base&a_ios,constperiod_type&,
                            constduration_type&dur_unit,
                            constfacet_type&facet)const;
    >Общий код для анализа периода – независимо от типа периода.

    Этот общий код будет анализировать любой период, используя грань, чтобы получить «элементы». Например, в случае date_period элементами будут экземпляры даты, которые будут разбираться в соответствии с установкой в пройденном граневом параметре.

    Шаги для разбора периода всегда одинаковы:

    • потребляют начальный разграничитель

    • элемент старта

    • Потребляйте разделитель

    • получить либо последний, либо конечный элемент в зависимости от настроек диапазона

    • потреблять конечный делиметр в зависимости от настроек диапазона

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

    [March 01, 2004/June 07, 2004]   <-- closed range
    [March 01, 2004/June 08, 2004)   <-- open range
    

period_parser private member functions

  1. <
    voidconsume_delim(stream_itr_type&sitr,stream_itr_type&stream_end,
                      conststring_type&delim)const;
    >бросает ios_base::провал, если разграничитель и парсированные данные не совпадают

PrevUpHomeNext

Статья Class template period_parser раздела The Boost C++ Libraries BoostBook Documentation Subset Library Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Library Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:45:43/0.007066011428833/0