Reference   
  
Кумулятивное приложение для библиотеки string_algo
 
Определяет алгоритмы преобразования последовательностей. Алгоритмы преобразуют каждый элемент входной последовательности в желаемый случай с использованием предоставленных локализаций.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  OutputIteratorT,  typename  RangeT>  
      OutputIteratorT  
      to_lower_copy ( OutputIteratorT ,  const  RangeT  & ,  
                    const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT>  
      SequenceT  to_lower_copy ( const  SequenceT  & ,  
                              const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  WritableRangeT>  
      void  to_lower ( WritableRangeT  & ,  const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  OutputIteratorT,  typename  RangeT>  
      OutputIteratorT  
      to_upper_copy ( OutputIteratorT ,  const  RangeT  & ,  
                    const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT>  
      SequenceT  to_upper_copy ( const  SequenceT  & ,  
                              const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  WritableRangeT>  
      void  to_upper ( WritableRangeT  & ,  const  std :: locale  &  =  std :: locale ( ) ) ; 
  } 
}  
Классификационные предикаты включаются в библиотеку, чтобы обеспечить больше удобства при использовании таких алгоритмов, как<trim()>и<all()>. Они обертывают функциональность функций классификации STL (например,<std::isspace()>) в общие функторы.
namespace  boost  { 
  namespace  algorithm  { 
    unspecified is_classified ( std :: ctype_base :: mask ,  
                              const  std :: locale  &  =  std :: locale ( ) ) ; 
    unspecified is_space ( const  std :: locale  &  =  std :: locale ( ) ) ; 
    unspecified is_alnum ( const  std :: locale  &  =  std :: locale ( ) ) ; 
    unspecified is_alpha ( const  std :: locale  &  =  std :: locale ( ) ) ; 
    unspecified is_cntrl ( const  std :: locale  &  =  std :: locale ( ) ) ; 
    unspecified is_digit ( const  std :: locale  &  =  std :: locale ( ) ) ; 
    unspecified is_graph ( const  std :: locale  &  =  std :: locale ( ) ) ; 
    unspecified is_lower ( const  std :: locale  &  =  std :: locale ( ) ) ; 
    unspecified is_print ( const  std :: locale  &  =  std :: locale ( ) ) ; 
    unspecified is_punct ( const  std :: locale  &  =  std :: locale ( ) ) ; 
    unspecified is_upper ( const  std :: locale  &  =  std :: locale ( ) ) ; 
    unspecified is_xdigit ( const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  RangeT>  unspecified is_any_of ( const  RangeT  & ) ; 
    template < typename  CharT>  unspecified is_from_range ( CharT ,  CharT ) ; 
    template < typename  Pred1T,  typename  Pred2T>  
      unspecified operator && ( const  predicate_facade <  Pred1T  >  & ,  
                             const  predicate_facade <  Pred2T  >  & ) ; 
    template < typename  Pred1T,  typename  Pred2T>  
      unspecified operator || ( const  predicate_facade <  Pred1T  >  & ,  
                             const  predicate_facade <  Pred2T  >  & ) ; 
    template < typename  PredT>  
      unspecified operator ! ( const  predicate_facade <  PredT  >  & ) ; 
  } 
}  
Определяет предикаты сравнения элементов. Многие алгоритмы в этой библиотеке могут использовать дополнительный аргумент с предикатом, используемым для сравнения элементов. Это позволяет, например, иметь бесчувственные версии алгоритмов.
namespace  boost  { 
  namespace  algorithm  { 
    struct  is_equal ; 
    struct  is_iequal ; 
    struct  is_less ; 
    struct  is_iless ; 
    struct  is_not_greater ; 
    struct  is_not_igreater ; 
  } 
}  
Определение понятий, используемых в библиотеке string_algo
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  FinderT,  typename  IteratorT>  struct  FinderConcept ; 
    template < typename  FormatterT,  typename  FinderT,  typename  IteratorT>  
      struct  FormatterConcept ; 
  } 
}  
Определяет различные алгоритмы стирания. Каждый алгоритм удаляет часть (части) ввода в соответствии с критериями поиска.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  OutputIteratorT,  typename  RangeT>  
      OutputIteratorT  
      erase_range_copy ( OutputIteratorT ,  const  RangeT  & ,  
                       const  iterator_range <  typename  range_const_iterator <  RangeT  > :: type  >  & ) ; 
    template < typename  SequenceT>  
      SequenceT  erase_range_copy ( const  SequenceT  & ,  
                                 const  iterator_range <  typename  range_const_iterator <  SequenceT  > :: type  >  & ) ; 
    template < typename  SequenceT>  
      void  erase_range ( SequenceT  & ,  
                       const  iterator_range <  typename  range_iterator <  SequenceT  > :: type  >  & ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T>  
      OutputIteratorT  
      erase_first_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  erase_first_copy ( const  SequenceT  & ,  const  RangeT  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  erase_first ( SequenceT  & ,  const  RangeT  & ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T>  
      OutputIteratorT  
      ierase_first_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  
                        const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  ierase_first_copy ( const  SequenceT  & ,  const  RangeT  & ,  
                                  const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  ierase_first ( SequenceT  & ,  const  RangeT  & ,  
                        const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T>  
      OutputIteratorT  
      erase_last_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  erase_last_copy ( const  SequenceT  & ,  const  RangeT  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  erase_last ( SequenceT  & ,  const  RangeT  & ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T>  
      OutputIteratorT  
      ierase_last_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  
                       const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  ierase_last_copy ( const  SequenceT  & ,  const  RangeT  & ,  
                                 const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  ierase_last ( SequenceT  & ,  const  RangeT  & ,  
                       const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T>  
      OutputIteratorT  
      erase_nth_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  int ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  erase_nth_copy ( const  SequenceT  & ,  const  RangeT  & ,  int ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  erase_nth ( SequenceT  & ,  const  RangeT  & ,  int ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T>  
      OutputIteratorT  
      ierase_nth_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  int ,  
                      const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  ierase_nth_copy ( const  SequenceT  & ,  const  RangeT  & ,  int ,  
                                const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  ierase_nth ( SequenceT  & ,  const  RangeT  & ,  int ,  
                      const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T>  
      OutputIteratorT  
      erase_all_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  erase_all_copy ( const  SequenceT  & ,  const  RangeT  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  erase_all ( SequenceT  & ,  const  RangeT  & ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T>  
      OutputIteratorT  
      ierase_all_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  
                      const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  ierase_all_copy ( const  SequenceT  & ,  const  RangeT  & ,  
                                const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  ierase_all ( SequenceT  & ,  const  RangeT  & ,  
                      const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  OutputIteratorT,  typename  RangeT>  
      OutputIteratorT  erase_head_copy ( OutputIteratorT ,  const  RangeT  & ,  int ) ; 
    template < typename  SequenceT>  
      SequenceT  erase_head_copy ( const  SequenceT  & ,  int ) ; 
    template < typename  SequenceT>  void  erase_head ( SequenceT  & ,  int ) ; 
    template < typename  OutputIteratorT,  typename  RangeT>  
      OutputIteratorT  erase_tail_copy ( OutputIteratorT ,  const  RangeT  & ,  int ) ; 
    template < typename  SequenceT>  
      SequenceT  erase_tail_copy ( const  SequenceT  & ,  int ) ; 
    template < typename  SequenceT>  void  erase_tail ( SequenceT  & ,  int ) ; 
  } 
}  
Определяет набор алгоритмов поиска. Алгоритмы ищут подстроку входа. В результате получается<iterator_range>разграничение подстроки.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  RangeT,  typename  FinderT>  
      iterator_range <  typename  range_iterator <  RangeT  > :: type  >  
      find ( RangeT  & ,  const  FinderT  & ) ; 
    template < typename  Range1T,  typename  Range2T>  
      iterator_range <  typename  range_iterator <  Range1T  > :: type  >  
      find_first ( Range1T  & ,  const  Range2T  & ) ; 
    template < typename  Range1T,  typename  Range2T>  
      iterator_range <  typename  range_iterator <  Range1T  > :: type  >  
      ifind_first ( Range1T  & ,  const  Range2T  & ,  
                  const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  Range1T,  typename  Range2T>  
      iterator_range <  typename  range_iterator <  Range1T  > :: type  >  
      find_last ( Range1T  & ,  const  Range2T  & ) ; 
    template < typename  Range1T,  typename  Range2T>  
      iterator_range <  typename  range_iterator <  Range1T  > :: type  >  
      ifind_last ( Range1T  & ,  const  Range2T  & ,  
                 const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  Range1T,  typename  Range2T>  
      iterator_range <  typename  range_iterator <  Range1T  > :: type  >  
      find_nth ( Range1T  & ,  const  Range2T  & ,  int ) ; 
    template < typename  Range1T,  typename  Range2T>  
      iterator_range <  typename  range_iterator <  Range1T  > :: type  >  
      ifind_nth ( Range1T  & ,  const  Range2T  & ,  int ,  
                const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  RangeT>  
      iterator_range <  typename  range_iterator <  RangeT  > :: type  >  
      find_head ( RangeT  & ,  int ) ; 
    template < typename  RangeT>  
      iterator_range <  typename  range_iterator <  RangeT  > :: type  >  
      find_tail ( RangeT  & ,  int ) ; 
    template < typename  RangeT,  typename  PredicateT>  
      iterator_range <  typename  range_iterator <  RangeT  > :: type  >  
      find_token ( RangeT  & ,  PredicateT ,  
                 token_compress_mode_type  =  token_compress_off ) ; 
  } 
}  
Определение общих алгоритмов замены. Каждый алгоритм заменяет часть (части) ввода. Заменяемая часть просматривается с помощью объекта Finder. Результат поиска затем используется объектом Вещества для генерации замены.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  OutputIteratorT,  typename  RangeT,  typename  FinderT,  
             typename  FormatterT>  
      OutputIteratorT  
      find_format_copy ( OutputIteratorT ,  const  RangeT  & ,  FinderT ,  FormatterT ) ; 
    template < typename  SequenceT,  typename  FinderT,  typename  FormatterT>  
      SequenceT  find_format_copy ( const  SequenceT  & ,  FinderT ,  FormatterT ) ; 
    template < typename  SequenceT,  typename  FinderT,  typename  FormatterT>  
      void  find_format ( SequenceT  & ,  FinderT ,  FormatterT ) ; 
    template < typename  OutputIteratorT,  typename  RangeT,  typename  FinderT,  
             typename  FormatterT>  
      OutputIteratorT  
      find_format_all_copy ( OutputIteratorT ,  const  RangeT  & ,  FinderT ,  
                           FormatterT ) ; 
    template < typename  SequenceT,  typename  FinderT,  typename  FormatterT>  
      SequenceT  find_format_all_copy ( const  SequenceT  & ,  FinderT ,  FormatterT ) ; 
    template < typename  SequenceT,  typename  FinderT,  typename  FormatterT>  
      void  find_format_all ( SequenceT  & ,  FinderT ,  FormatterT ) ; 
  } 
}  
Определены классы итераторов. Find Iterator неоднократно применяет Finder к указанной строке ввода для поиска совпадений. Отклонение итератора дает текущее соответствие или диапазон между последним и текущим матчем в зависимости от используемого итератора.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  IteratorT>  class  find_iterator ; 
    template < typename  IteratorT>  class  split_iterator ; 
    template < typename  RangeT,  typename  FinderT>  
      find_iterator <  typename  range_iterator <  RangeT  > :: type  >  
      make_find_iterator ( RangeT  & ,  FinderT ) ; 
    template < typename  RangeT,  typename  FinderT>  
      split_iterator <  typename  range_iterator <  RangeT  > :: type  >  
      make_split_iterator ( RangeT  & ,  FinderT ) ; 
  } 
}  
Определение генераторов Finder. Объект Finder - это функтор, который может найти подстроку, соответствующую определенным критериям во входе. Искатели используются в качестве подключаемых компонентов для замены, поиска и разделения объектов. Этот заголовок содержит функции генератора для искателей, представленных в этой библиотеке.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  RangeT>  unspecified first_finder ( const  RangeT  & ) ; 
    template < typename  RangeT,  typename  PredicateT>  
      unspecified first_finder ( const  RangeT  & ,  PredicateT ) ; 
    template < typename  RangeT>  unspecified last_finder ( const  RangeT  & ) ; 
    template < typename  RangeT,  typename  PredicateT>  
      unspecified last_finder ( const  RangeT  & ,  PredicateT ) ; 
    template < typename  RangeT>  unspecified nth_finder ( const  RangeT  & ,  int ) ; 
    template < typename  RangeT,  typename  PredicateT>  
      unspecified nth_finder ( const  RangeT  & ,  int ,  PredicateT ) ; 
    unspecified head_finder ( int ) ; 
    unspecified tail_finder ( int ) ; 
    template < typename  PredicateT>  
      unspecified token_finder ( PredicateT ,  
                               token_compress_mode_type  =  token_compress_off ) ; 
    template < typename  ForwardIteratorT>  
      unspecified range_finder ( ForwardIteratorT ,  ForwardIteratorT ) ; 
    template < typename  ForwardIteratorT>  
      unspecified range_finder ( iterator_range <  ForwardIteratorT  > ) ; 
  } 
}  
Определение генераторов материи. Формат - это функтор, который форматирует строку в соответствии с заданными параметрами. Материя работает в сочетании с искателем. Finder может предоставить дополнительную информацию для конкретного формата. Примером такого сотрудничества являются regex_finder и regex_formatter.
Вещества используются в качестве подключаемых компонентов для замены объектов. Этот заголовок содержит функции генератора для Веществ, представленных в этой библиотеке.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  RangeT>  unspecified const_formatter ( const  RangeT  & ) ; 
    template < typename  RangeT>  unspecified identity_formatter ( ) ; 
    template < typename  RangeT>  unspecified empty_formatter ( const  RangeT  & ) ; 
    template < typename  FinderT>  unspecified dissect_formatter ( const  FinderT  & ) ; 
  } 
}  
Определение общих алгоритмов разделения. Алгоритмы разделения могут использоваться для разделения последовательности на несколько частей в соответствии с заданными критериями. Результат дается как контейнер контейнеров, где элементы являются копиями или ссылками на извлеченные части.
Предусмотрены два алгоритма. Один из них повторяется над соответствующими подстроками, другой над промежутками между этими матчами.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  SequenceSequenceT,  typename  RangeT,  typename  FinderT>  
      SequenceSequenceT  &  iter_find ( SequenceSequenceT  & ,  RangeT  & ,  FinderT ) ; 
    template < typename  SequenceSequenceT,  typename  RangeT,  typename  FinderT>  
      SequenceSequenceT  &  iter_split ( SequenceSequenceT  & ,  RangeT  & ,  FinderT ) ; 
  } 
}  
Определение алгоритма присоединения.
Алгоритм присоединения является аналогом алгоритмов разделения. Он присоединяется к строкам из «списка», добавляя пользовательский сепаратор. Кроме того, есть версия, которая позволяет простую фильтрацию, предоставляя предикат.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  SequenceSequenceT,  typename  Range1T>  
      range_value <  SequenceSequenceT  > :: type  
      join ( const  SequenceSequenceT  & ,  const  Range1T  & ) ; 
    template < typename  SequenceSequenceT,  typename  Range1T,  
             typename  PredicateT>  
      range_value <  SequenceSequenceT  > :: type  
      join_if ( const  SequenceSequenceT  & ,  const  Range1T  & ,  PredicateT ) ; 
  } 
}  
Определяет струнные предикаты. Предикаты определяют, содержится ли подструна во входной строке при различных условиях: строка начинается с подстроки, заканчивается подстрочкой, просто содержит подстроку или обе строки равны. Добавить алгоритм<all()>Проверка всех элементов контейнера на предмет соответствия условиям.
Все предикаты обеспечивают сильную гарантию исключения.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  Range1T,  typename  Range2T,  typename  PredicateT>  
      bool  starts_with ( const  Range1T  & ,  const  Range2T  & ,  PredicateT ) ; 
    template < typename  Range1T,  typename  Range2T>  
      bool  starts_with ( const  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  Range1T,  typename  Range2T>  
      bool  istarts_with ( const  Range1T  & ,  const  Range2T  & ,  
                        const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  Range1T,  typename  Range2T,  typename  PredicateT>  
      bool  ends_with ( const  Range1T  & ,  const  Range2T  & ,  PredicateT ) ; 
    template < typename  Range1T,  typename  Range2T>  
      bool  ends_with ( const  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  Range1T,  typename  Range2T>  
      bool  iends_with ( const  Range1T  & ,  const  Range2T  & ,  
                      const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  Range1T,  typename  Range2T,  typename  PredicateT>  
      bool  contains ( const  Range1T  & ,  const  Range2T  & ,  PredicateT ) ; 
    template < typename  Range1T,  typename  Range2T>  
      bool  contains ( const  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  Range1T,  typename  Range2T>  
      bool  icontains ( const  Range1T  & ,  const  Range2T  & ,  
                     const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  Range1T,  typename  Range2T,  typename  PredicateT>  
      bool  equals ( const  Range1T  & ,  const  Range2T  & ,  PredicateT ) ; 
    template < typename  Range1T,  typename  Range2T>  
      bool  equals ( const  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  Range1T,  typename  Range2T>  
      bool  iequals ( const  Range1T  & ,  const  Range2T  & ,  
                   const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  Range1T,  typename  Range2T,  typename  PredicateT>  
      bool  lexicographical_compare ( const  Range1T  & ,  const  Range2T  & ,  
                                   PredicateT ) ; 
    template < typename  Range1T,  typename  Range2T>  
      bool  lexicographical_compare ( const  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  Range1T,  typename  Range2T>  
      bool  ilexicographical_compare ( const  Range1T  & ,  const  Range2T  & ,  
                                    const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  RangeT,  typename  PredicateT>  
      bool  all ( const  RangeT  & ,  PredicateT ) ; 
  } 
}  
Определяет регексные варианты алгоритмов.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  RangeT,  typename  CharT,  typename  RegexTraitsT>  
      iterator_range <  typename  range_iterator <  RangeT  > :: type  >  
      find_regex ( RangeT  & ,  const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                 match_flag_type  =  match_default ) ; 
    template < typename  OutputIteratorT,  typename  RangeT,  typename  CharT,  
             typename  RegexTraitsT,  typename  FormatStringTraitsT,  
             typename  FormatStringAllocatorT>  
      OutputIteratorT  
      replace_regex_copy ( OutputIteratorT ,  const  RangeT  & ,  
                         const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                         const  std :: basic_string <  CharT ,  FormatStringTraitsT ,  FormatStringAllocatorT  >  & ,  
                         match_flag_type  =  match_default | format_default ) ; 
    template < typename  SequenceT,  typename  CharT,  typename  RegexTraitsT,  
             typename  FormatStringTraitsT,  typename  FormatStringAllocatorT>  
      SequenceT  replace_regex_copy ( const  SequenceT  & ,  
                                   const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                                   const  std :: basic_string <  CharT ,  FormatStringTraitsT ,  FormatStringAllocatorT  >  & ,  
                                   match_flag_type  =  match_default | format_default ) ; 
    template < typename  SequenceT,  typename  CharT,  typename  RegexTraitsT,  
             typename  FormatStringTraitsT,  typename  FormatStringAllocatorT>  
      void  replace_regex ( SequenceT  & ,  
                         const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                         const  std :: basic_string <  CharT ,  FormatStringTraitsT ,  FormatStringAllocatorT  >  & ,  
                         match_flag_type  =  match_default | format_default ) ; 
    template < typename  OutputIteratorT,  typename  RangeT,  typename  CharT,  
             typename  RegexTraitsT,  typename  FormatStringTraitsT,  
             typename  FormatStringAllocatorT>  
      OutputIteratorT  
      replace_all_regex_copy ( OutputIteratorT ,  const  RangeT  & ,  
                             const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                             const  std :: basic_string <  CharT ,  FormatStringTraitsT ,  FormatStringAllocatorT  >  & ,  
                             match_flag_type  =  match_default | format_default ) ; 
    template < typename  SequenceT,  typename  CharT,  typename  RegexTraitsT,  
             typename  FormatStringTraitsT,  typename  FormatStringAllocatorT>  
      SequenceT  replace_all_regex_copy ( const  SequenceT  & ,  
                                       const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                                       const  std :: basic_string <  CharT ,  FormatStringTraitsT ,  FormatStringAllocatorT  >  & ,  
                                       match_flag_type  =  match_default | format_default ) ; 
    template < typename  SequenceT,  typename  CharT,  typename  RegexTraitsT,  
             typename  FormatStringTraitsT,  typename  FormatStringAllocatorT>  
      void  replace_all_regex ( SequenceT  & ,  
                             const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                             const  std :: basic_string <  CharT ,  FormatStringTraitsT ,  FormatStringAllocatorT  >  & ,  
                             match_flag_type  =  match_default | format_default ) ; 
    template < typename  OutputIteratorT,  typename  RangeT,  typename  CharT,  
             typename  RegexTraitsT>  
      OutputIteratorT  
      erase_regex_copy ( OutputIteratorT ,  const  RangeT  & ,  
                       const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                       match_flag_type  =  match_default ) ; 
    template < typename  SequenceT,  typename  CharT,  typename  RegexTraitsT>  
      SequenceT  erase_regex_copy ( const  SequenceT  & ,  
                                 const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                                 match_flag_type  =  match_default ) ; 
    template < typename  SequenceT,  typename  CharT,  typename  RegexTraitsT>  
      void  erase_regex ( SequenceT  & ,  
                       const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                       match_flag_type  =  match_default ) ; 
    template < typename  OutputIteratorT,  typename  RangeT,  typename  CharT,  
             typename  RegexTraitsT>  
      OutputIteratorT  
      erase_all_regex_copy ( OutputIteratorT ,  const  RangeT  & ,  
                           const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                           match_flag_type  =  match_default ) ; 
    template < typename  SequenceT,  typename  CharT,  typename  RegexTraitsT>  
      SequenceT  erase_all_regex_copy ( const  SequenceT  & ,  
                                     const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                                     match_flag_type  =  match_default ) ; 
    template < typename  SequenceT,  typename  CharT,  typename  RegexTraitsT>  
      void  erase_all_regex ( SequenceT  & ,  
                           const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                           match_flag_type  =  match_default ) ; 
    template < typename  SequenceSequenceT,  typename  RangeT,  typename  CharT,  
             typename  RegexTraitsT>  
      SequenceSequenceT  &  
      find_all_regex ( SequenceSequenceT  & ,  const  RangeT  & ,  
                     const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                     match_flag_type  =  match_default ) ; 
    template < typename  SequenceSequenceT,  typename  RangeT,  typename  CharT,  
             typename  RegexTraitsT>  
      SequenceSequenceT  &  
      split_regex ( SequenceSequenceT  & ,  const  RangeT  & ,  
                  const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                  match_flag_type  =  match_default ) ; 
    template < typename  SequenceSequenceT,  typename  Range1T,  typename  CharT,  
             typename  RegexTraitsT>  
      range_value <  SequenceSequenceT  > :: type  
      join_if ( const  SequenceSequenceT  & ,  const  Range1T  & ,  
              const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
              match_flag_type  =  match_default ) ; 
  } 
}  
Определяет генераторы<regex_finder>и<regex_formatter>. Эти два функтора предназначены для совместной работы.<regex_formatter>использует дополнительную информацию о совпадении, содержащуюся в результатах поиска regex_finder.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  CharT,  typename  RegexTraitsT>  
      unspecified regex_finder ( const  basic_regex <  CharT ,  RegexTraitsT  >  & ,  
                               match_flag_type  =  match_default ) ; 
    template < typename  CharT,  typename  TraitsT,  typename  AllocT>  
      unspecified regex_formatter ( const  std :: basic_string <  CharT ,  TraitsT ,  AllocT  >  & ,  
                                  match_flag_type  =  format_default ) ; 
  } 
}  
Определены различные алгоритмы замены. Каждый алгоритм заменяет часть (части) ввода в соответствии с набором критериев поиска и замены.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T>  
      OutputIteratorT  
      replace_range_copy ( OutputIteratorT ,  const  Range1T  & ,  
                         const  iterator_range <  typename  range_const_iterator <  Range1T  > :: type  >  & ,  
                         const  Range2T  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  replace_range_copy ( const  SequenceT  & ,  
                                   const  iterator_range <  typename  range_const_iterator <  SequenceT  > :: type  >  & ,  
                                   const  RangeT  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  replace_range ( SequenceT  & ,  
                         const  iterator_range <  typename  range_iterator <  SequenceT  > :: type  >  & ,  
                         const  RangeT  & ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T,  
             typename  Range3T>  
      OutputIteratorT  
      replace_first_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  
                         const  Range3T  & ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      SequenceT  replace_first_copy ( const  SequenceT  & ,  const  Range1T  & ,  
                                   const  Range2T  & ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      void  replace_first ( SequenceT  & ,  const  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T,  
             typename  Range3T>  
      OutputIteratorT  
      ireplace_first_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  
                          const  Range3T  & ,  
                          const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  Range2T,  typename  Range1T>  
      SequenceT  ireplace_first_copy ( const  SequenceT  & ,  const  Range2T  & ,  
                                    const  Range1T  & ,  
                                    const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      void  ireplace_first ( SequenceT  & ,  const  Range1T  & ,  const  Range2T  & ,  
                          const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T,  
             typename  Range3T>  
      OutputIteratorT  
      replace_last_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  
                        const  Range3T  & ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      SequenceT  replace_last_copy ( const  SequenceT  & ,  const  Range1T  & ,  
                                  const  Range2T  & ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      void  replace_last ( SequenceT  & ,  const  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T,  
             typename  Range3T>  
      OutputIteratorT  
      ireplace_last_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  
                         const  Range3T  & ,  
                         const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      SequenceT  ireplace_last_copy ( const  SequenceT  & ,  const  Range1T  & ,  
                                   const  Range2T  & ,  
                                   const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      void  ireplace_last ( SequenceT  & ,  const  Range1T  & ,  const  Range2T  & ,  
                         const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T,  
             typename  Range3T>  
      OutputIteratorT  
      replace_nth_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  int ,  
                       const  Range3T  & ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      SequenceT  replace_nth_copy ( const  SequenceT  & ,  const  Range1T  & ,  int ,  
                                 const  Range2T  & ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      void  replace_nth ( SequenceT  & ,  const  Range1T  & ,  int ,  const  Range2T  & ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T,  
             typename  Range3T>  
      OutputIteratorT  
      ireplace_nth_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  
                        int ,  const  Range3T  & ,  
                        const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      SequenceT  ireplace_nth_copy ( const  SequenceT  & ,  const  Range1T  & ,  int ,  
                                  const  Range2T  & ,  
                                  const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      void  ireplace_nth ( SequenceT  & ,  const  Range1T  & ,  int ,  const  Range2T  & ,  
                        const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T,  
             typename  Range3T>  
      OutputIteratorT  
      replace_all_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  
                       const  Range3T  & ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      SequenceT  replace_all_copy ( const  SequenceT  & ,  const  Range1T  & ,  
                                 const  Range2T  & ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      void  replace_all ( SequenceT  & ,  const  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T,  
             typename  Range3T>  
      OutputIteratorT  
      ireplace_all_copy ( OutputIteratorT ,  const  Range1T  & ,  const  Range2T  & ,  
                        const  Range3T  & ,  const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      SequenceT  ireplace_all_copy ( const  SequenceT  & ,  const  Range1T  & ,  
                                  const  Range2T  & ,  
                                  const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  Range1T,  typename  Range2T>  
      void  ireplace_all ( SequenceT  & ,  const  Range1T  & ,  const  Range2T  & ,  
                        const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T>  
      OutputIteratorT  
      replace_head_copy ( OutputIteratorT ,  const  Range1T  & ,  int ,  
                        const  Range2T  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  replace_head_copy ( const  SequenceT  & ,  int ,  const  RangeT  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  replace_head ( SequenceT  & ,  int ,  const  RangeT  & ) ; 
    template < typename  OutputIteratorT,  typename  Range1T,  typename  Range2T>  
      OutputIteratorT  
      replace_tail_copy ( OutputIteratorT ,  const  Range1T  & ,  int ,  
                        const  Range2T  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  replace_tail_copy ( const  SequenceT  & ,  int ,  const  RangeT  & ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  replace_tail ( SequenceT  & ,  int ,  const  RangeT  & ) ; 
  } 
}  
Черты, определенные в этом заголовке, используются различными алгоритмами для достижения лучшей производительности для конкретных контейнеров. Черты обеспечивают отказоустойчивые дефолты. Если контейнер поддерживает некоторые из этих функций, можно специализировать конкретную черту для этого контейнера. При отсутствии компиляторов можно определить оверрайд для конкретной функции тестера.
Из-за языкового ограничения в настоящее время невозможно определить специализации для контейнеров stl без включения соответствующего заголовка. Чтобы уменьшить накладные расходы, необходимые для этого включения, пользователь может выборочно включать заголовок специализации для конкретного контейнера. Они расположены в каталоге boost/algorithm/string/stl. В качестве альтернативы она может включать в себя заголовок boost/algorithm/string/std_collection_traits.hpp, который содержит специализации для всех стил-контейнеров.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  T>  class  has_native_replace ; 
    template < typename  T>  class  has_stable_iterators ; 
    template < typename  T>  class  has_const_time_insert ; 
    template < typename  T>  class  has_const_time_erase ; 
  } 
}  
Определение основных алгоритмов разделения. Алгоритмы разделения могут использоваться для разделения строки на несколько частей в соответствии с заданными критериями.
Каждая часть копируется и добавляется в качестве нового элемента в выходной контейнер. Таким образом, результирующий контейнер должен иметь возможность хранить копии спичек (в совместимой структуре, такой как std::string) или ссылку на него (например, используя класс дальности итератора). Примерами таких контейнеров являются<std::vector<std::string>>или<std::list<boost::iterator_range<std::string::iterator>>>.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  SequenceSequenceT,  typename  Range1T,  typename  Range2T>  
      SequenceSequenceT  &  
      find_all ( SequenceSequenceT  & ,  Range1T  & ,  const  Range2T  & ) ; 
    template < typename  SequenceSequenceT,  typename  Range1T,  typename  Range2T>  
      SequenceSequenceT  &  
      ifind_all ( SequenceSequenceT  & ,  Range1T  & ,  const  Range2T  & ,  
                const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceSequenceT,  typename  RangeT,  typename  PredicateT>  
      SequenceSequenceT  &  
      split ( SequenceSequenceT  & ,  RangeT  & ,  PredicateT ,  
            token_compress_mode_type  =  token_compress_off ) ; 
  } 
}  
Этот файл включает в себя черты последовательности для контейнеров stl.
 
Определяет алгоритмы отделки. Алгоритмы Trim используются для удаления следов и ведущих пространств из последовательности (струны). Пространство распознается с использованием данных мест.
Параметрические (<_if>) варианты используют предикат (функтор), чтобы выбрать, какие символы должны быть обрезаны. Функции берут предикат отбора в качестве параметра, который используется для определения того, является ли персонаж пространством. Общие предикаты приведены в классификации. Заголовок hpp.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  OutputIteratorT,  typename  RangeT,  typename  PredicateT>  
      OutputIteratorT  
      trim_left_copy_if ( OutputIteratorT ,  const  RangeT  & ,  PredicateT ) ; 
    template < typename  SequenceT,  typename  PredicateT>  
      SequenceT  trim_left_copy_if ( const  SequenceT  & ,  PredicateT ) ; 
    template < typename  SequenceT>  
      SequenceT  trim_left_copy ( const  SequenceT  & ,  
                               const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  PredicateT>  
      void  trim_left_if ( SequenceT  & ,  PredicateT ) ; 
    template < typename  SequenceT>  
      void  trim_left ( SequenceT  & ,  const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  OutputIteratorT,  typename  RangeT,  typename  PredicateT>  
      OutputIteratorT  
      trim_right_copy_if ( OutputIteratorT ,  const  RangeT  & ,  PredicateT ) ; 
    template < typename  SequenceT,  typename  PredicateT>  
      SequenceT  trim_right_copy_if ( const  SequenceT  & ,  PredicateT ) ; 
    template < typename  SequenceT>  
      SequenceT  trim_right_copy ( const  SequenceT  & ,  
                                const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  PredicateT>  
      void  trim_right_if ( SequenceT  & ,  PredicateT ) ; 
    template < typename  SequenceT>  
      void  trim_right ( SequenceT  & ,  const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  OutputIteratorT,  typename  RangeT,  typename  PredicateT>  
      OutputIteratorT  
      trim_copy_if ( OutputIteratorT ,  const  RangeT  & ,  PredicateT ) ; 
    template < typename  SequenceT,  typename  PredicateT>  
      SequenceT  trim_copy_if ( const  SequenceT  & ,  PredicateT ) ; 
    template < typename  SequenceT>  
      SequenceT  trim_copy ( const  SequenceT  & ,  
                          const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  PredicateT>  
      void  trim_if ( SequenceT  & ,  PredicateT ) ; 
    template < typename  SequenceT>  
      void  trim ( SequenceT  & ,  const  std :: locale  &  =  std :: locale ( ) ) ; 
  } 
}  
Определяет алгоритмы trim_all.
Так же, как<trim>,<trim_all>удаляет из последовательности (струны) все следящие и ведущие пространства. Кроме того, пространства в середине последовательности усечены до одного символа. Пространство распознается с использованием данных мест.
<trim_fill>действует как trim_all, но пробелы в середине заменяются определяемой пользователем последовательностью символов.
Параметрические (<_if>) варианты используют предикат (функтор), чтобы выбрать, какие символы должны быть обрезаны. Функции берут предикат отбора в качестве параметра, который используется для определения того, является ли персонаж пространством. Общие предикаты приведены в классификации. Заголовок hpp.
namespace  boost  { 
  namespace  algorithm  { 
    template < typename  SequenceT,  typename  PredicateT>  
      SequenceT  trim_all_copy_if ( const  SequenceT  & ,  PredicateT ) ; 
    template < typename  SequenceT,  typename  PredicateT>  
      void  trim_all_if ( SequenceT  & ,  PredicateT ) ; 
    template < typename  SequenceT>  
      SequenceT  trim_all_copy ( const  SequenceT  & ,  
                              const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT>  
      void  trim_all ( SequenceT  & ,  const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  RangeT,  typename  PredicateT>  
      SequenceT  trim_fill_copy_if ( const  SequenceT  & ,  const  RangeT  & ,  
                                  PredicateT ) ; 
    template < typename  SequenceT,  typename  RangeT,  typename  PredicateT>  
      void  trim_fill_if ( SequenceT  & ,  const  RangeT  & ,  PredicateT ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      SequenceT  trim_fill_copy ( const  SequenceT  & ,  const  RangeT  & ,  
                               const  std :: locale  &  =  std :: locale ( ) ) ; 
    template < typename  SequenceT,  typename  RangeT>  
      void  trim_fill ( SequenceT  & ,  const  RangeT  & ,  
                     const  std :: locale  &  =  std :: locale ( ) ) ; 
  } 
}  
Совокупность для библиотеки string_algo. В дополнение к string.hpp также содержит материалы, связанные с регексом.
 
 
Статья Reference  раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 2. Boost String Algorithms Library  может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная  :: Chapter 2. Boost String Algorithms Library  ::