![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Character SetsBoost , ,
Набор символовchsetсоответствует набору символов в конечном диапазоне, ограниченном пределами его параметра шаблона.Шарт. Этот класс представляет собой оптимизацию парсера, который действует на набор отдельных символов. Класс шаблона параметризируется по типу символаШарти может эффективно работать с 8, 16 и 32 и даже 64-битными символами. template <typename CharT = char> class chset; chsetпостроен из букв (например,'x'),ch_pилиchlit<>,range_pилидиапазон<>,любойchar_pиnothing_p(см.примитивы) или копия, построенная из другогонабора. Классchsetиспользует схему копирования в записи, которая позволяет легко передавать экземпляры по значению.
Примеры: chset<> s1('x'); chset<> s2(anychar_p - s1); Необязательно, наборы символов также могут быть построены с использованием строки определения, следующей за синтаксисом, который напоминает наборы символов с регулярным выражением в стиле posix, за исключением того, что двойные цитаты ограничивают элементы набора вместо квадратных скобок и нет специального отрицания^символа. range = anychar_p >> '-' >> anychar_p; set = *(range_p | anychar_p); Поскольку мы определяем набор с помощью строки C, применяются обычные правила синтаксиса строк C/C++. Примеры: chset<> s1("a-zA-Z"); // alphabetic characters chset<> s2("0-9a-fA-F"); // hexadecimal characters chset<> s3("actgACTG"); // DNA identifiers chset<> s4("\x7f\x7e"); // Hexadecimal 0x7F and 0x7E Применяются стандартные операторы набора Spirit (см.операторы) плюс дополнительный оператор обратного набора символов (отрицание~):
где операнды a и b оба являютсячеламиили один из операндов является либо буквальным символом,ch_pилиchlit,range_pилиrange,anychar_pилиnothing_p. Специальные оптимизированные перегрузки предусмотрены для операндовanychar_pиnothing_p. Опрандnothing_pпреобразуется в пустой набор, в то время как операндanychar_pпреобразуется в набор, содержащий элементы полного диапазона используемого типа символов (например, 0-255 для неподписанных 8-битных загонов). Особым случаем является~anychar_p, который не даетничего_p, но~nothing_pявляется незаконным. Инверсияanychar_pасимметрична, однопутная поездка сравнима с преобразованиемT*впустоту*.
Copyright © 1998-2003 Joel de Guzman Статья Character Sets раздела может быть полезна для разработчиков на c++ и boost. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: ::
|
||||||||||||||||||||||||||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |