CppDS.com

C++ 98 11 14 17 20 手册

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

来自cppreference.com
regex_iterator& operator++();
(C++11 起)
regex_iterator operator++(int);
(C++11 起)

推进迭代器到下个匹配。

首先以 match[0].second 的值构造 BidirIt 类型局部变量。

若迭代器保有零长匹配且 start == end ,则设置 *this 为序列尾迭代器,函数返回。

否则,若迭代器保有零长匹配,则运算符调用以下内容:

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

若调用返回 true ,则函数返回。

否则运算符自增 start 并持续,如同最近匹配不是零长匹配。

若最近匹配不是零长匹配,则运算符设置 flagsflags | regex_constants::match_prev_avail 并调用以下内容:

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

若调用返回 false ,则运算符设置 *this 为序列尾迭代器,函数返回。

调用 regex_search 返回 true 的所有情况下, match.prefix().first 将等于 match[0].second 的先前值,而且对于范围 [0, match.size()) 中满足 match[i].matchedtrue 的的每个 imatch[i].position() 将返回 distance(begin, match[i].first)

这表明 match[i].position() 给出自目标序列起始的偏移,它通常与从传递给 regex_search 调用中的序列偏移不同。

实现如何进行这些调整是未指定的。这表明编译器可以调用实现限定的搜索函数,该情况下将不调用用户定义的 regex_search 特化。

若迭代器是序列尾迭代器则行为未定义。

参数

(无)

返回值

1) *this
2) 迭代器的先前值。
关闭