std::regex_iterator<BidirIt,CharT,Traits>::operator++, operator++(int)
regex_iterator& operator++(); |
(since C++11) | |
regex_iterator operator++( int ); |
(since 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 не будет вызвана.
Поведение неопределено, если итератор является итератором конца последовательности.
Параметры
(нет)
Возвращаемое значение
*this
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/regex/regex_iterator/operator_arith