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
要比較的迭代器。
備註
如果 *this
和 right 都是序列結尾反覆運算器,或是兩者都不是序列結尾反覆運算器,begin == right.begin
則成員函式會傳回 true;如果 和 、 pregex == right.pregex
end == right.end
和 flags == 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