共用方式為


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
項目的 Traits 類別。

備註

類別範本描述常數正向反覆運算器物件。 它會將其規則運算式物件 match_results<BidIt> 重複套用至迭代器範圍 *pregex 所定義的字元序列,藉以擷取 [begin, end)類型的物件。

建構函式

建構函式 描述
regex_iterator 建構迭代器。

Typedefs

類型名稱 描述
difference_type 迭代器差值的類型。
iterator_category 迭代器分類的類型。
pointer 要比對的指標類型。
reference 對應的參考類型。
regex_type 要比對的規則運算式類型。
value_type 相符項目的類型。

操作員

運算子 描述
operator!= 比較迭代器是否不相等。
operator* 存取指定的相符項目。
operator++ 遞增迭代器。
operator= 比較迭代器是否相等。
operator-> 存取指定的相符項目。

需求

Header:<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::d ifference_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)。 不論是哪種情況,如果搜尋失敗,此運算子便會將物件設定為結束序列 (end-of-sequence) 迭代器。 此運算子會傳回該物件。

第二個運算子會複製物件、遞增物件,然後傳回複本。

regex_iterator::operator=

比較迭代器是否相等。

bool operator==(const regex_iterator& right);

參數

right
要比較的迭代器。

備註

如果 *thisright 都是序列結尾反覆運算器,或是兩者都不是序列結尾反覆運算器,begin == right.begin則成員函式會傳回 true;如果 和 、 pregex == right.pregexend == right.endflags == right.flags兩者都不是結尾反覆運算器,則傳回 true。 否則會傳回 false。

regex_iterator::operator->

存取指定的相符項目。

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

備註

此成員函式會傳回儲存值 match的位址。

regex_iterator::p ointer

要比對的指標類型。

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
要比對的序列結尾。


比對的規則運算式。

f
比對的旗標。

備註

第一個建構函式會建構結束序列 (end-of-sequence) 迭代器。 第二個建構函式會使用第一個來初始化預存值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