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 ::