template<typename BaseIterator>
class boost::locale::boundary::segment_index< BaseIterator >
Этот класс содержит индекс сегментов в текстовом диапазоне и позволяет им повторяться.
Этот класс обеспечиваетначало()иконец ()функции-члены, возвращающие двунаправленные итераторы всегментобъектов.
Он предоставляет два варианта выбора сегментов:
правило (rule_type mask)— маска, позволяющая выбирать только определенные типы сегментов согласно различным маскам какслово_any. По умолчанию выбирается любой тип границ. Например: при использовании анализа границ слов, когда представленная маска являетсяword_kana, итераторы будут повторяться только над словами, содержащими буквы Каны, аword_anyбудет выбирать все типы слов, исключая диапазоны, которые состоят из белого пространства и знаков препинания. Так, повторяя над текстом «быть или не быть?» ссловом_anyправило возвращало бы сегменты «к», «быть», «или», «не», «к», «быть», вместо по умолчанию «к», «, «быть», «, «или», «, «не», «к», «, «быть», «?»
full_select(bool how)— флаг, определяющий способ выбора диапазона, если правило предыдущей пограничной точки не соответствует выбранному правилу. Например: Мы хотим извлечь все предложения из следующего текста: «Привет! Как ты себя чувствуешь? Этот текст содержит три граничные точки, разделяющие его на предложения по разным правилам:
Восклицательный знак «!» заканчивается предложением «Привет!».
Линейная лента, которая разделяет предложение «Как вы?» на две части.
Вопросительный знак, который завершает второе предложение. Если бы вы только изменили правилонаsentence_term, тогдаsegment_indexпредоставил бы два предложения «Привет!» и «Вы?», поскольку только они фактически заканчиваются с требуемым терминатором «!» или «?». Но, изменивfull_select()на true, выбранный сегмент будет включать весь текст вплоть до предыдущей действительной пограничной точки и вернет два ожидаемых предложения: «Привет!» и «Как дела?».
Этот класс позволяет найти сегмент по заданному итератору в диапазоне с помощьюfind()Функция члена.
Note
Изменение любого из вариантов -правило()илиfull_select()и, конечно, повторное индексирование текста аннулирует существующие итераторы, и они больше не могут использоваться.
Статья Boost.Locale: boost::locale::boundary::segment_index< BaseIterator > Class Template Reference раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.