Класс regex_traits
Описывает характеристики элементов для сопоставления.
Синтаксис
template<class Elem>
class regex_traits
Параметры
Elem
Тип элемента символа для описания.
Замечания
Шаблон класса описывает различные признаки регулярного выражения для типа Elem. Шаблон класса basic_regex класс использует эти сведения для управления элементами типа Elem.
Каждый объект regex_traits
содержит объект типа regex_traits::locale
, используемый некоторыми из его функций-членов. Языковой стандарт по умолчанию является копией regex_traits::locale()
. Функция-член imbue
заменяет объект языкового стандарта, а функция-член getloc
возвращает копию объекта языкового стандарта.
Конструкторы
Конструктор | Description |
---|---|
regex_traits | Создает объект. |
Определения типов
Введите имя | Description |
---|---|
char_class_type | Тип обозначений класса символов. |
char_type | Тип элемента. |
locale_type | Тип сохраненного объекта языкового стандарта. |
size_type | Тип длины последовательности. |
string_type | Тип строки элементов. |
Функции элементов
Функция-член | Description |
---|---|
getloc | Возвращает сохраненный объект языкового стандарта. |
imbue | Изменяет сохраненный объект языкового стандарта. |
isctype | Проверяет членство в классе. |
length | Возвращает длину последовательности, завершаемой значением NULL. |
lookup_classname | Сопоставляет последовательность с классом символов. |
lookup_collatename | Сопоставляет последовательность с элементом упорядочивания. |
transform | Преобразует в эквивалентную упорядоченную последовательность. |
transform_primary | Преобразует в эквивалентную упорядоченную последовательность без учета регистра. |
translate | Преобразует в эквивалентный соответствующий элемент. |
translate_nocase | Преобразует в эквивалентный соответствующий элемент без учета регистра. |
значение | Преобразует элемент в цифровое значение. |
Требования
Заголовок:<regex>
Пространство имен: std
Пример
// std__regex__regex_traits.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>
typedef std::regex_traits<char> Mytr;
int main()
{
Mytr tr;
Mytr::char_type ch = tr.translate('a');
std::cout << "translate('a') == 'a' == " << std::boolalpha
<< (ch == 'a') << std::endl;
std::cout << "nocase 'a' == 'A' == " << std::boolalpha
<< (tr.translate_nocase('a') == tr.translate_nocase('A'))
<< std::endl;
const char *lbegin = "abc";
const char *lend = lbegin + strlen(lbegin);
Mytr::size_type size = tr.length(lbegin);
std::cout << "length(\"abc\") == " << size <<std::endl;
Mytr::string_type str = tr.transform(lbegin, lend);
std::cout << "transform(\"abc\") < \"abc\" == " << std::boolalpha
<< (str < "abc") << std::endl;
const char *ubegin = "ABC";
const char *uend = ubegin + strlen(ubegin);
std::cout << "primary \"ABC\" < \"abc\" == " << std::boolalpha
<< (tr.transform_primary(ubegin, uend) <
tr.transform_primary(lbegin, lend))
<< std::endl;
const char *dig = "digit";
Mytr::char_class_type cl = tr.lookup_classname(dig, dig + 5);
std::cout << "class digit == d == " << std::boolalpha
<< (cl == tr.lookup_classname(dig, dig + 1))
<< std::endl;
std::cout << "'3' is digit == " <<std::boolalpha
<< tr.isctype('3', tr.lookup_classname(dig, dig + 5))
<< std::endl;
std::cout << "hex C == " << tr.value('C', 16) << std::endl;
// other members
str = tr.lookup_collatename(dig, dig + 5);
Mytr::locale_type loc = tr.getloc();
tr.imbue(loc);
return (0);
}
translate('a') == 'a' == true
nocase 'a' == 'A' == true
length("abc") == 3
transform("abc") < "abc" == false
primary "ABC" < "abc" == false
class digit == d == true
'3' is digit == true
hex C == 12
regex_traits::char_class_type
Тип обозначений класса символов.
typedef T8 char_class_type;
Замечания
Тип является синонимом незаданного типа, который обозначает классы символов. Значения этого типа могут быть объединены с помощью оператора |
для обозначения классов символов, которые представляют собой объединение классов, указанных операндами.
regex_traits::char_type
Тип элемента.
typedef Elem char_type;
Замечания
Определение типа является синонимом параметра шаблона Elem
.
regex_traits::getloc
Возвращает сохраненный объект языкового стандарта.
locale_type getloc() const;
Замечания
Эта функция-член возвращает хранимый объект locale
.
regex_traits::imbue
Изменяет сохраненный объект языкового стандарта.
locale_type imbue(locale_type loc);
Параметры
положение
Объект языкового стандарта, который необходимо сохранить.
Замечания
Функция-член копирует указатель на сохраненный locale
объект и возвращает копию предыдущего значения хранимого locale
объекта.
regex_traits::isctype
Проверяет членство в классе.
bool isctype(char_type ch, char_class_type cls) const;
Параметры
ch
Элемент для проверки.
cls
Классы для проверки.
Замечания
Функция-член возвращает значение true, только если блок символов находится в классе символов, заданном cls.
regex_traits::length
Возвращает длину последовательности, завершаемой значением NULL.
static size_type length(const char_type *str);
Параметры
str
Последовательность, завершаемая значением NULL.
Замечания
Статическая функция-член возвращает значение std::char_traits<char_type>::length(str)
.
regex_traits::locale_type
Тип сохраненного объекта языкового стандарта.
typedef T7 locale_type;
Замечания
Определение типа является синонимом типа, который инкапсулирует языковые стандарты. В специализациях regex_traits<char>
и regex_traits<wchar_t>
он является синонимом std::locale
.
regex_traits::lookup_classname
Сопоставляет последовательность с классом символов.
template <class FwdIt>
char_class_type lookup_classname(FwdIt first, FwdIt last) const;
Параметры
first
Начало искомой последовательности.
last
Конец искомой последовательности.
Замечания
Функция-член возвращает значение, которое определяет класс символов с именем, образуемым последовательностью символов, на которую указывают аргументы. Значение не зависит от регистра символов в последовательности.
Специализация regex_traits<char>
распознает имена "d"
, "s"
, "w"
, "alnum"
, "alpha"
, "blank"
, "cntrl"
, "digit"
, "graph"
, "lower"
, "print"
, "punct"
, "space"
, "upper"
и "xdigit"
, все без учета регистра.
Специализация regex_traits<wchar_t>
распознает имена L"d"
, L"s"
, L"w"
, L"alnum"
, L"alpha"
, L"blank"
, L"cntrl"
, L"digit"
, L"graph"
, L"lower"
, L"print"
, L"punct"
, L"space"
, L"upper"
и L"xdigit"
, все без учета регистра.
regex_traits::lookup_collatename
Сопоставляет последовательность с элементом упорядочивания.
template <class FwdIt>
string_type lookup_collatename(FwdIt first, FwdIt last) const;
Параметры
first
Начало искомой последовательности.
last
Конец искомой последовательности.
Замечания
Функция-член возвращает строковый объект, содержащий элемент упорядочивания, соответствующий последовательности [first, last)
, или пустую строку, если последовательность не является допустимым элементом упорядочивания.
regex_traits::regex_traits
Создает объект.
regex_traits();
Замечания
Конструктор создает объект, хранимый объект locale
которого инициализируется с языковым стандартом по умолчанию.
regex_traits::size_type
Тип длины последовательности.
typedef T6 size_type;
Замечания
Typedef выступает синонимом для целочисленного типа без знака. В специализациях regex_traits<char>
и regex_traits<wchar_t>
он является синонимом std::size_t
.
Typedef является синонимом std::size_t
.
regex_traits::string_type
Тип строки элементов.
typedef basic_string<Elem> string_type;
Замечания
Typedef является синонимом basic_string<Elem>
.
regex_traits::transform
Преобразует в эквивалентную упорядоченную последовательность.
template <class FwdIt>
string_type transform(FwdIt first, FwdIt last) const;
Параметры
first
Начало преобразуемой последовательности.
last
Конец преобразуемой последовательности.
Замечания
Функция-член возвращает строку, которая создается с помощью правила преобразования, зависящего от сохраненного объекта locale
. Для двух последовательностей символов, указанных диапазонами итератора [first1, last1)
и [first2, last2)
, значение transform(first1, last1) < transform(first2, last2)
, если последовательность символов, указанная диапазоном итератора [first1, last1)
, предшествует последовательности символов, указанной диапазоном итератора [first2, last2)
.
regex_traits::transform_primary
Преобразует в эквивалентную упорядоченную последовательность без учета регистра.
template <class FwdIt>
string_type transform_primary(FwdIt first, FwdIt last) const;
Параметры
first
Начало преобразуемой последовательности.
last
Конец преобразуемой последовательности.
Замечания
Функция-член возвращает строку, которая создается с помощью правила преобразования, зависящего от сохраненного объекта locale
. Для двух последовательностей символов, указанных диапазонами итератора [first1, last1)
и [first2, last2)
, выражение transform_primary(first1, last1) < transform_primary(first2, last2)
, если последовательность символов, указанная диапазоном итератора [first1, last1)
, выполняет сортировку до последовательности символов, указанной диапазоном итератора [first2, last2)
, без учета регистра и диакритических знаков.
regex_traits::translate
Преобразует в эквивалентный соответствующий элемент.
char_type translate(char_type ch) const;
Параметры
ch
Преобразуемый элемент.
Замечания
Функция-член возвращает символ, который создается с помощью правила преобразования, зависящего от сохраненного объекта locale
. Для двух объектов char_type
, ch1
и ch2
, значение translate(ch1) == translate(ch2)
, только если ch1
и ch2
должны совпадать, когда один объект возникает в определении регулярного выражения, а второй — в соответствующей позиции в целевой последовательности для сопоставления, зависящего от языкового стандарта.
regex_traits::translate_nocase
Преобразует в эквивалентный соответствующий элемент без учета регистра.
char_type translate_nocase(char_type ch) const;
Параметры
ch
Преобразуемый элемент.
Замечания
Функция-член возвращает символ, который создается с помощью правила преобразования, зависящего от сохраненного объекта locale
. Для двух объектов char_type
, ch1
и ch2
, значение translate_nocase(ch1) == translate_nocase(ch2)
, только если ch1
и ch2
должны совпадать, когда один объект возникает в определении регулярного выражения, а второй — в соответствующей позиции в целевой последовательности для сопоставления, не учитывающего регистр.
regex_traits::value
Преобразует элемент в цифровое значение.
int value(Elem ch, int radix) const;
Параметры
ch
Преобразуемый элемент.
radix
Используемое арифметическое основание.
Замечания
Функция-член возвращает значение, представленное символом ch в базовом радиксе или -1, если ch не является допустимой цифрой в базовом радиксе. Функция будет вызываться только с радиксом аргумента 8, 10 или 16.
См. также
<regex>
Класс regex_constants
Класс regex_error
<функции regex>
Класс regex_iterator
<Операторы regex>
Класс regex_token_iterator
<regex> typedefs
<класс char> regex_traits
<Класс regex_traits wchar_t>