Spec-Zone.ru › C++

std::regex_iterator<BidirIt,CharT,Traits>::operator++, operator++(int)

regex_iterator& operator++();
(начиная с C++11)
regex_iterator operator++( int );
(начиная с C++11)

Перемещает итератор к следующему совпадению.

Сначала создаётся локальная переменная типа BidirIt со значением match[0].second.

Если итератор хранит совпадение нулевой длины и start == end, *this устанавливается в итератор конца последовательности, и функция возвращает управление.

В противном случае, если итератор хранит совпадение нулевой длины, оператор вызывает следующее:

regex_search(start,end,match,*pregex, flags|regex_constants::match_not_null| regex_constants::match_continuous);

Если вызов возвращает true, функция возвращает управление.

В противном случае оператор увеличивает start и продолжает работу, как если бы последнее совпадение не было совпадением нулевой длины.

Если последнее совпадение не было совпадением нулевой длины, оператор устанавливает flags в flags | regex_constants::match_prev_avail и вызывает следующее:

regex_search(start,end,match,*pregex,flags);

Если вызов возвращает false, итератор устанавливает *this в итератор конца последовательности, и функция возвращает управление.

Во всех случаях, когда вызов regex_search возвращает true, match.prefix().first будет равно предыдущему значению match[0].second, и для каждого индекса i в диапазоне [0, match.size()), для которого match[i].matched равно true, match[i].position() вернёт distance(begin, match[i].first).

Это означает, что match[i].position() задаёт смещение от начала целевой последовательности, которое часто не совпадает со смещением относительно последовательности, переданной в вызове regex_search.

Не определено, каким образом реализация выполняет эти корректировки. Это означает, что компилятор может вызывать специфичную для реализации функцию поиска; в этом случае пользовательская специализация regex_search вызвана не будет.

Поведение не определено, если итератор является итератором конца последовательности.

Параметры

(нет)

Возвращаемое значение

1) *this
2) Предыдущее значение итератора.

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/regex/regex_iterator/operator_arith

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API