命名空间
变体
操作

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 并继续执行,就好像最近一次匹配不是零长度匹配一样。

如果最近一次匹配不是零长度匹配,则运算符将 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 的先前值,并且对于范围 [0match.size()) 中的每个索引 i,如果 match[i].matchedtrue,则 match[i].position() 将返回 distance(begin, match[i].first)

这意味着 match[i].position() 给出了从目标序列开头处的偏移量,这通常与从 regex_search 调用中传递的序列开头的偏移量不同。

实现如何进行这些调整是未定义的。这意味着编译器可能会调用实现特定的搜索函数,在这种情况下,不会调用 regex_search 的用户定义的专门化。

如果迭代器是序列结束迭代器,则行为未定义。

[编辑] 参数

(无)

[编辑] 返回值

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