Шар_сепараторкласс разбивает последовательность символов на токены, основанные на разграничителях символов, почти так же, какstrtok()делает (но без всех зол невозвращения и разрушения входной последовательности).
Функцияstrtok()не включает совпадения с ограничителями символов в выходной последовательности токенов. Однако иногда полезно, чтобы разграничители отображались в выходной последовательности, поэтомуchar_separatorпредоставляет это в качестве опции. Мы говорим о разграничителях, которые отображаются в качестве выходных токенов, посколькусохранили разграничителии разграничители, которые теперь отображаются в качестве выходных токенов, посколькусбросили разграничители.
Когда два разграничителя появляются рядом друг с другом во входной последовательности, возникает вопрос, выводить липустой токенили пропустить вперед. Поведениестратокзаключается в том, чтобы проскочить вперед. Классchar_separatorпредоставляет оба варианта.
Examples
Первые примеры показывают, как использоватьchar_separatorв качестве заменыstrtok().Функция. Мы определили три ограничителя символов, и они не будут отображаться в качестве выходных токенов. Мы не указали какие-либо сохраненные разграничители, и по умолчанию любые пустые токены будут игнорироваться.
Следующий пример показывает токенизацию с двумя сброшенными разграничителями '-' и ';' и одним сохраненным разграничителем ' |'. Мы также указываем, что пустые токены должны отображаться на выходе, когда два разграничителя находятся рядом друг с другом.
Это создает объектchar_separator, который затем может быть использован для созданияtoken_iteratorилиtokenizerдля выполнения токенизации.drop_delimsиkeep_delims— это строки символов, где каждый символ используется в качестве делимитера во время токенизации. Всякий раз, когда в входной последовательности виден делимитер, текущий токен завершается, и начинается новый токен. Ограничители вdrop_delimsне отображаются как токены на выходе, тогда как ограничители вkeep_delimsотображаются как токены. Еслипустые токеныявляютсяопускающимися токенами, то пустые токены не будут отображаться на выходе. Еслипустые токенысохраняют пустые токены, то пустые токены будут отображаться на выходе.
explicit char_separator()
Функцияstd::isspace()используется для идентификации опущенных делимитаторов иstd::ispunct()используется для идентификации хранимых разграничителей. Кроме того, отбрасываются пустые токены.
Статья Boost Char Separator раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.