regex_iterator 类

匹配项的迭代器类。

语法

template<class BidIt,
   class Elem = typename std::iterator_traits<BidIt>::value_type,
   class RxTraits = regex_traits<Elem> >
class regex_iterator

参数

BidIt
子匹配项的迭代器类型。

Elem
要匹配的元素的类型。

RXtraits
元素的特征类。

备注

这个类模板描述常量前向迭代器对象。 它将其正则表达式对象 match_results<BidIt> 重复应用到迭代器范围 *pregex 定义的字符序列,以提取 [begin, end)类型的对象。

构造函数

构造函数 说明
regex_iterator 构造迭代器。

Typedef

类型名称 说明
difference_type 迭代器差异的类型。
iterator_category 迭代器类别的类型。
pointer 指向一个匹配的指针的类型。
reference 对匹配项的引用的类型。
regex_type 要匹配的正则表达式类型。
value_type 匹配的类型。

运算符

运算符 说明
operator!= 比较不相等的迭代器。
operator* 访问指定的匹配项。
operator++ 递增迭代器。
operator= 比较迭代器是否相等。
operator-> 访问指定的匹配项。

要求

标头:<regex>

命名空间: std

示例

有关正则表达式的示例,请参阅下面的文章:

// std__regex__regex_iterator.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>

typedef std::regex_iterator<const char *> Myiter;
int main()
    {
    const char *pat = "axayaz";
    Myiter::regex_type rx("a");
    Myiter next(pat, pat + strlen(pat), rx);
    Myiter end;

    for (; next != end; ++next)
        std::cout << "match == " << next->str() << std::endl;

// other members
    Myiter it1(pat, pat + strlen(pat), rx);
    Myiter it2(it1);
    next = it1;

    Myiter::iterator_category cat = std::forward_iterator_tag();
    Myiter::difference_type dif = -3;
    Myiter::value_type mr = *it1;
    Myiter::reference ref = mr;
    Myiter::pointer ptr = &ref;

    dif = dif; // to quiet "unused" warnings
    ptr = ptr;

    return (0);
    }
match == a
match == a
match == a

regex_iterator::difference_type

迭代器差异的类型。

typedef std::ptrdiff_t difference_type;

注解

类型是 std::ptrdiff_t 的同义词。

regex_iterator::iterator_category

迭代器类别的类型。

typedef std::forward_iterator_tag iterator_category;

注解

类型是 std::forward_iterator_tag 的同义词。

regex_iterator::operator!=

比较不相等的迭代器。

bool operator!=(const regex_iterator& right);

参数

right
要进行比较的迭代器。

备注

成员函数返回 !(*this == right)

regex_iterator::operator*

访问指定的匹配项。

const match_results<BidIt>& operator*();

注解

该成员函数将返回存储值 match

regex_iterator::operator++

递增迭代器。

regex_iterator& operator++();
regex_iterator& operator++(int);

备注

如果当前匹配项不具有字符,则第一个运算符将调用 regex_search(begin, end, match, *pregex, flags | regex_constants::match_prev_avail | regex_constants::match_not_null);否则它会将存储的值 begin 推进到指向当前匹配项后的第一个字符,然后调用 regex_search(begin, end, match, *pregex, flags | regex_constants::match_prev_avail)。 在任一情况下,如果搜索失败,则该运算符会将对象设置为序列末迭代器。 运算符返回该对象。

第二个运算符生成对象的副本,递增对象,然后返回副本。

regex_iterator::operator=

比较迭代器是否相等。

bool operator==(const regex_iterator& right);

参数

right
要进行比较的迭代器。

注解

如果 *this 和 right 均为序列末尾迭代器或均不为序列末尾迭代器且 begin == right.beginend == right.endpregex == right.pregexflags == right.flags,则此成员函数将返回 true。 否则,返回 false。

regex_iterator::operator->

访问指定的匹配项。

const match_results<BidIt> * operator->();

备注

此成员函数返回存储值 match的地址。

regex_iterator::pointer

指向一个匹配的指针的类型。

typedef match_results<BidIt> *pointer;

备注

类型是 match_results<BidIt>* 的同义词,其中 BidIt 是模板参数。

regex_iterator::reference

对匹配项的引用的类型。

typedef match_results<BidIt>& reference;

备注

类型是 match_results<BidIt>& 的同义词,其中 BidIt 是模板参数。

regex_iterator::regex_iterator

构造迭代器。

regex_iterator();

regex_iterator(BidIt first,
    BidIt last,
    const regex_type& re,
    regex_constants::match_flag_type f = regex_constants::match_default);

参数

first
要匹配的序列的开头。

last
要匹配的序列的结尾。

re
匹配项正则表达式。

f
匹配标志。

备注

第一个构造函数将构造序列末迭代器。 第二个构造函数使用 first 初始化存储的值 begin,使用 last 初始化存储的值 end,使用 &re 初始化存储的值 pregex,并使用 f 初始化存储的值 flags 然后,它调用 regex_search(begin, end, match, *pregex, flags)。 如果搜索失败,则构造函数会将对象设置为序列末迭代器。

regex_iterator::regex_type

要匹配的正则表达式类型。

typedef basic_regex<Elem, RXtraits> regex_type;

备注

typedef 是 basic_regex<Elem, RXtraits>的同义词。

regex_iterator::value_type

匹配的类型。

typedef match_results<BidIt> value_type;

注解

类型是 match_results<BidIt> 的同义词,其中 BidIt 是模板参数。

另请参阅

<regex>
regex_constants 类
regex_error 类
<regex> 函数
regex_iterator 类
<regex> 运算符
regex_token_iterator 类
regex_traits 类
<regex> typedefs