共用方式為


regex_token_iterator 類別

子相符項目的迭代器類別。

語法

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

參數

BidIt
子相符項目的迭代器類型。

Elem
要符合之項目的類型。

RXtraits
項目的 Traits 類別。

備註

類別範本描述常數正向反覆運算器物件。 就概念而言,它會保存 regex_iterator 物件,以用來搜尋字元序列中的規則運算式相符項目。 它會擷取 sub_match<BidIt> 類型的物件,該物件代表針對每個規則運算式相符項目儲存的向量 subs 中的索引值所識別的子相符項目。

索引值 -1 指定字元序列會在上一個規則運算式相符項目的結尾之後立即開始,如果之前沒有任何規則運算式相符項目,則會從字元序列的開頭開始,並延伸到 (但不包含) 目前規則運算式相符項目的第一個字元,如果目前沒有相符項目,則延伸到字元序列的結尾。 其他任何索引值 idx 則指定 it.match[idx]中所保留之擷取群組的內容。

成員

member 預設值
private regex_iterator<BidIt, Elem, RXtraits> it
private vector<int> subs
private int pos

建構函式

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

Typedefs

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

操作員

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

需求

Header:<regex>

命名空間:std

範例

#include <regex>
#include <iostream>

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

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

// show prefix before match
    next = Myiter(pat, pat + strlen(pat), rx, -1);
    for (; next != end; ++next)
        std::cout << "match == " << next->str() << std::endl;
    std::cout << std::endl;

// show (a) submatch only
    next = Myiter(pat, pat + strlen(pat), rx, 1);
    for (; next != end; ++next)
        std::cout << "match == " << next->str() << std::endl;
    std::cout << std::endl;

// show prefixes and submatches
    std::vector<int> vec;
    vec.push_back(-1);
    vec.push_back(1);
    next = Myiter(pat, pat + strlen(pat), rx, vec);
    for (; next != end; ++next)
        std::cout << "match == " << next->str() << std::endl;
    std::cout << std::endl;

// show prefixes and whole matches
    int arr[] = {-1, 0};
    next = Myiter(pat, pat + strlen(pat), rx, arr);
    for (; next != end; ++next)
        std::cout << "match == " << next->str() << std::endl;
    std::cout << 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 == aa
match == aa
match == aa

match ==
match == x
match == y
match == z

match == a
match == a
match == a

match ==
match == a
match == x
match == a
match == y
match == a
match == z

match ==
match == aa
match == x
match == aa
match == y
match == aa
match == z

regex_token_iterator::d ifference_type

迭代器差值的類型。

typedef std::ptrdiff_t difference_type;

備註

此類型是 std::ptrdiff_t的同義字。

regex_token_iterator::iterator_category

迭代器分類的類型。

typedef std::forward_iterator_tag iterator_category;

備註

此類型是 std::forward_iterator_tag的同義字。

regex_token_iterator::operator!=

比較迭代器是否不相等。

bool operator!=(const regex_token_iterator& right);

參數

right
要比較的迭代器。

備註

此成員函式會傳回 !(*this == right)

regex_token_iterator::operator*

存取指定的子對應項目。

const sub_match<BidIt>& operator*();

備註

成員函式會傳回 sub_match<BidIt> 物件,以代表索引值 subs[pos]所識別之擷取群組。

regex_token_iterator::operator++

遞增迭代器。

regex_token_iterator& operator++();

regex_token_iterator& operator++(int);

備註

如果預存迭代器 it 是序列結尾迭代器,則第一個運算子會將預存值 pos 設為 subs.size() 的值 (因而產生序列結尾迭代器)。 否則,運算子遞增預存值 pos;如果結果等於值 subs.size(),它會將預存值 pos 設為零,並遞增預存迭代器 it。 如果預存迭代器在遞增後變得不等於序列結尾迭代器,則運算子不會有進一步動作。 否則,如果先前比對的結尾就是字元序列的結尾,則運算子會將 pos 的預存值設為 subs.size()。 否則,運算子會重複遞增預存值 pos,直到 pos == subs.size()subs[pos] == -1 為止 (以確保在其中一個索引值為 -1 時,迭代器的下一個取值會傳回字元序列的結尾)。 在所有情況下,運算子都會傳回物件。

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

regex_token_iterator::operator==

比較迭代器是否相等。

bool operator==(const regex_token_iterator& right);

參數

right
要比較的迭代器。

備註

此成員函式會傳回 it == right.it && subs == right.subs && pos == right.pos

regex_token_iterator::operator->

存取指定的子對應項目。

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

備註

成員函式會傳回 sub_match<BidIt> 物件的指標,以代表索引值 subs[pos]所識別之擷取群組。

regex_token_iterator::p ointer

要比對的指標類型。

typedef sub_match<BidIt> *pointer;

備註

此類型與 sub_match<BidIt>*同義,其中 BidIt 是樣板參數。

regex_token_iterator::reference

子對應的參考類型。

typedef sub_match<BidIt>& reference;

備註

此類型與 sub_match<BidIt>&同義,其中 BidIt 是樣板參數。

regex_token_iterator::regex_token_iterator

建構迭代器。

regex_token_iterator();

regex_token_iterator(BidIt first, BidIt last,
    const regex_type& re, int submatch = 0,
    regex_constants::match_flag_type f = regex_constants::match_default);

regex_token_iterator(BidIt first, BidIt last,
    const regex_type& re, const vector<int> submatches,
    regex_constants::match_flag_type f = regex_constants::match_default);

template <std::size_t N>
regex_token_iterator(BidIt first, BidIt last,
    const regex_type& re, const int (&submatches)[N],
    regex_constants::match_flag_type f = regex_constants::match_default);

參數

first
要比對的序列開頭。

last
要比對的序列結尾。


比對的規則運算式。

f
比對的旗標。

備註

第一個建構函式會建構結束序列 (end-of-sequence) 迭代器。

第二個建構函式會建構一個物件,其儲存的迭代器 it 已初始化為 regex_iterator<BidIt, Elem, RXtraits>(first, last, re, f)、其儲存的向量 subs 只會保留一個整數值 submatch,而其儲存值 pos 則為零。 注意:產生的物件會在每次規則運算式比對成功時,擷取索引值 submatch 所識別的子相符項目。

第三個建構函式會建構一個物件,其儲存的迭代器 it 已初始化為 regex_iterator<BidIt, Elem, RXtraits>(first, last, re, f)、其儲存的向量 subs 會保留建構函式引數 submatches的一個複本,而其儲存值 pos 則為零。

第四個建構函式會建構一個物件,其儲存的迭代器 it 已初始化為 regex_iterator<BidIt, Elem, RXtraits>(first, last, re, f)、其儲存的向量 subs 會保留建構函式引數 N 所指向的 submatches值,而其儲存值 pos 則為零。

regex_token_iterator::regex_type

要比對的規則運算式類型。

typedef basic_regex<Elem, RXtraits> regex_type;

備註

此 typedef 是 basic_regex<Elem, RXtraits>的同義字。

regex_token_iterator::value_type

子對應的類型。

typedef sub_match<BidIt> value_type;

備註

此類型與 sub_match<BidIt>同義,其中 BidIt 是樣板參數。

另請參閱

<regex>
regex_constants 類別
regex_error 類別
<regex> 函式
regex_iterator 類別
<regex> 運算符
regex_traits 類別
<regex> typedefs