Класс 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);

Параметры

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>