Класс regex_iterator

Класс итератора для соответствий.

Синтаксис

template<class BidIt,
   class Elem = typename std::iterator_traits<BidIt>::value_type,
   class RxTraits = regex_traits<Elem> >
class regex_iterator

Параметры

BidIt
Тип итератора для подстрок соответствия.

Elem
Тип элементов для обеспечения соответствия.

RXtraits
Класс характеристик для элементов.

Замечания

Шаблон класса описывает объект итератора постоянной пересылки. Он извлекает объекты типа match_results<BidIt> , несколько раз применяя объект регулярного выражения *pregex к последовательности символов, определенной диапазоном итератора [begin, end).

Конструкторы

Конструктор Description
regex_iterator Формирует итератор.

Определения типов

Введите имя Description
difference_type Тип разницы итератора.
iterator_category Тип категории итератора.
pointer Тип указателя на совпадение.
reference Тип ссылки на соответствие.
regex_type Тип регулярного выражения для сопоставления.
value_type Тип соответствия.

Операторы

Operator Description
оператор!= Сравнивает итераторы на неравенство.
operator* Обращается к заданному соответствию.
оператор++ Увеличивает значение итератора.
operator= Сравнивает итераторы на равенство.
operator-> Обращается к заданному соответствию.

Требования

Заголовок:<regex>

Пространство имен: std

Примеры

Примеры регулярных выражений см. в следующих статьях:

// std__regex__regex_iterator.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>

typedef std::regex_iterator<const char *> Myiter;
int main()
    {
    const char *pat = "axayaz";
    Myiter::regex_type rx("a");
    Myiter next(pat, pat + strlen(pat), rx);
    Myiter end;

    for (; next != end; ++next)
        std::cout << "match == " << next->str() << std::endl;

// other members
    Myiter it1(pat, pat + strlen(pat), rx);
    Myiter it2(it1);
    next = it1;

    Myiter::iterator_category cat = std::forward_iterator_tag();
    Myiter::difference_type dif = -3;
    Myiter::value_type mr = *it1;
    Myiter::reference ref = mr;
    Myiter::pointer ptr = &ref;

    dif = dif; // to quiet "unused" warnings
    ptr = ptr;

    return (0);
    }
match == a
match == a
match == a

regex_iterator::d ifference_type

Тип разницы итератора.

typedef std::ptrdiff_t difference_type;

Замечания

Тип является синонимом std::ptrdiff_t.

regex_iterator::iterator_category

Тип категории итератора.

typedef std::forward_iterator_tag iterator_category;

Замечания

Тип является синонимом std::forward_iterator_tag.

regex_iterator::operator!=

Сравнивает итераторы на неравенство.

bool operator!=(const regex_iterator& right);

Параметры

right
Итератор для сравнения.

Замечания

Функция-член возвращает значение !(*this == right).

regex_iterator::operator*

Обращается к заданному соответствию.

const match_results<BidIt>& operator*();

Замечания

Эта функция-член возвращает хранимое значение match.

regex_iterator::operator++

Увеличивает значение итератора.

regex_iterator& operator++();
regex_iterator& operator++(int);

Замечания

Если текущее совпадение не имеет символов, первый оператор вызывает; в противном случае он перемещает regex_search(begin, end, match, *pregex, flags | regex_constants::match_prev_avail | regex_constants::match_not_null)сохраненное значение begin , чтобы указать на первый символ после текущего совпадения, а затем вызывается regex_search(begin, end, match, *pregex, flags | regex_constants::match_prev_avail). В любом случае, если поиск заканчивается неудачно, оператор задает для объекта итератор конца последовательности. Оператор возвращает объект.

Второй оператор создает копию объекта, увеличивает объект, а затем возвращает копию.

regex_iterator::operator=

Сравнивает итераторы на равенство.

bool operator==(const regex_iterator& right);

Параметры

right
Итератор для сравнения.

Замечания

Функция-член возвращает значение true, если *this и справа являются итераторами конца последовательности, либо если ни есть итератор конца последовательности итератор и , и , end == right.endа flags == right.flagsbegin == right.beginтакже pregex == right.pregex. В противном случае возвращается значение false.

regex_iterator::operator->

Обращается к заданному соответствию.

const match_results<BidIt> * operator->();

Замечания

Функция-член возвращает адрес сохраненного значения match.

regex_iterator::p ointer

Тип указателя на совпадение.

typedef match_results<BidIt> *pointer;

Замечания

Этот тип является синонимом для match_results<BidIt>*, где BidIt — параметр шаблона.

regex_iterator::reference

Тип ссылки на соответствие.

typedef match_results<BidIt>& reference;

Замечания

Этот тип является синонимом для match_results<BidIt>&, где BidIt — параметр шаблона.

regex_iterator::regex_iterator

Формирует итератор.

regex_iterator();

regex_iterator(BidIt first,
    BidIt last,
    const regex_type& re,
    regex_constants::match_flag_type f = regex_constants::match_default);

Параметры

first
Начало последовательности для сопоставления.

last
Конец последовательности для сопоставления.

ре
Регулярное выражение для соответствий.

f
Флаги для соответствий.

Замечания

Первый конструктор создает итератор конца последовательности. Второй конструктор инициализирует хранимое значение begin с первым, сохраненным значением end с последним, сохраненным значением pregex &reи сохраненным значением flags f. Затем он вызывает regex_search(begin, end, match, *pregex, flags). Если поиск заканчивается неудачно, конструктор задает для объекта итератор конца последовательности.

regex_iterator::regex_type

Тип регулярного выражения для сопоставления.

typedef basic_regex<Elem, RXtraits> regex_type;

Замечания

Typedef является синонимом basic_regex<Elem, RXtraits>.

regex_iterator::value_type

Тип соответствия.

typedef match_results<BidIt> value_type;

Замечания

Этот тип является синонимом для match_results<BidIt>, где BidIt — параметр шаблона.

См. также

<regex>
Класс regex_constants
Класс regex_error
<функции regex>
Класс regex_iterator
<Операторы regex>
Класс regex_token_iterator
Класс regex_traits
<regex> typedefs