std::regex_iterator<BidirIt,CharT,Traits>::operator++, operator++(int)
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 的先前值,并且对于范围 [
0,
match.size())
中的每个索引 i,其中 match[i].matched 为 true,match[i].position() 将返回 distance(begin, match[i].first)。
这意味着 match[i].position() 给出了从目标序列开始的偏移量,这通常与传递给 regex_search 调用的序列的偏移量不同。
实现如何进行这些调整是未指定的。 这意味着编译器可以调用特定于实现的搜索函数,在这种情况下,将不会调用用户定义的 regex_search 特化。
如果迭代器是序列末尾迭代器,则行为未定义。
[编辑] 参数
(无)