regex_token_iterator — Klasa
Iterator, klasa dla podmatów.
Składnia
template<class BidIt,
class Elem = typename std::iterator_traits<BidIt>::value_type,
class RxTraits = regex_traits<Elem> >
class regex_token_iterator
Parametry
BidIt
Typ iteratora dla podmatów.
Elem
Typ elementów, do których ma pasować.
RXtraits
Klasa cech dla elementów.
Uwagi
Szablon klasy opisuje stały obiekt iteratora do przodu. Koncepcyjnie przechowuje regex_iterator
obiekt używany do wyszukiwania dopasowań wyrażeń regularnych w sekwencji znaków. Wyodrębnia obiekty typu sub_match<BidIt>
reprezentujące podmatie zidentyfikowane przez wartości indeksu w wektorze subs
przechowywanym dla każdego dopasowania wyrażenia regularnego.
Wartość indeksu -1 wyznacza sekwencję znaków rozpoczynającą się bezpośrednio po zakończeniu poprzedniego dopasowania wyrażenia regularnego lub rozpoczynając od początku sekwencji znaków, jeśli nie było poprzedniego dopasowania wyrażenia regularnego, i rozszerza się na, ale nie uwzględnia pierwszego znaku bieżącego dopasowania wyrażenia regularnego lub na końcu sekwencji znaków, jeśli nie ma bieżącego dopasowania. Każda inna wartość idx
indeksu określa zawartość grupy przechwytywania przechowywanej w obiekcie it.match[idx]
.
Elementy członkowskie
Element członkowski | Wartość domyślna |
---|---|
private regex_iterator<BidIt, Elem, RXtraits> it |
|
private vector<int> subs |
|
private int pos |
Konstruktory
Konstruktor | opis |
---|---|
regex_token_iterator | Konstruuje iterator. |
Typedefs
Nazwa typu | opis |
---|---|
difference_type | Typ różnicy iteratora. |
iterator_category | Typ kategorii iteratora. |
wskaźnik | Typ wskaźnika do dopasowania. |
odniesienie | Typ odwołania do podmatu. |
regex_type | Typ wyrażenia regularnego do dopasowania. |
value_type | Typ podmatu. |
Operatory
Operator | opis |
---|---|
operator!= | Porównuje iteratory pod kątem nierówności. |
operator* | Uzyskuje dostęp do wyznaczonej podpaski. |
operator++ | Zwiększa iterator. |
operator== | Porównuje iteratory pod kątem równości. |
operator-> | Uzyskuje dostęp do wyznaczonej podpaski. |
Wymagania
Nagłówek:<regex>
Przestrzeń nazw: std
Przykład
#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
Typ różnicy iteratora.
typedef std::ptrdiff_t difference_type;
Uwagi
Typ jest synonimem .std::ptrdiff_t
regex_token_iterator::iterator_category
Typ kategorii iteratora.
typedef std::forward_iterator_tag iterator_category;
Uwagi
Typ jest synonimem .std::forward_iterator_tag
regex_token_iterator::operator!=
Porównuje iteratory pod kątem nierówności.
bool operator!=(const regex_token_iterator& right);
Parametry
Prawy
Iterator do porównania.
Uwagi
Funkcja składowa zwraca wartość !(*this == right)
.
regex_token_iterator::operator*
Uzyskuje dostęp do wyznaczonej podpaski.
const sub_match<BidIt>& operator*();
Uwagi
Funkcja składowa zwraca obiekt reprezentujący grupę sub_match<BidIt>
przechwytywania zidentyfikowaną przez wartość subs[pos]
indeksu .
regex_token_iterator::operator++
Zwiększa iterator.
regex_token_iterator& operator++();
regex_token_iterator& operator++(int);
Uwagi
Jeśli przechowywany iterator it
jest iteratorem końca sekwencji, pierwszy operator ustawia przechowywaną wartość na wartość pos
subs.size()
(tworząc iterator końca sekwencji). W przeciwnym razie operator zwiększa przechowywaną wartość pos
; jeśli wynik jest równy wartości subs.size()
, ustawia przechowywaną wartość pos
na zero i zwiększa przechowywany iterator it
. Jeśli inkrementacja przechowywanego iteratora nie jest nierówna do iteratora końca sekwencji, operator nie wykonuje żadnych dalszych czynności. W przeciwnym razie, jeśli koniec poprzedniego dopasowania znajdował się na końcu sekwencji znaków, operator ustawia przechowywaną wartość pos
na subs.size()
wartość . W przeciwnym razie operator wielokrotnie zwiększa przechowywaną wartość pos
do pos == subs.size()
lub subs[pos] == -1
(w związku z tym upewniając się, że następne wyłudzenie iteratora zwróci ogon sekwencji znaków, jeśli jedna z wartości indeksu wynosi -1). We wszystkich przypadkach operator zwraca obiekt.
Drugi operator tworzy kopię obiektu, zwiększa obiekt, a następnie zwraca kopię.
regex_token_iterator::operator==
Porównuje iteratory pod kątem równości.
bool operator==(const regex_token_iterator& right);
Parametry
Prawy
Iterator do porównania.
Uwagi
Funkcja składowa zwraca wartość it == right.it && subs == right.subs && pos == right.pos
.
regex_token_iterator::operator->
Uzyskuje dostęp do wyznaczonej podpaski.
const sub_match<BidIt> * operator->();
Uwagi
Funkcja składowa zwraca wskaźnik do obiektu reprezentującego sub_match<BidIt>
grupę przechwytywania zidentyfikowaną przez wartość subs[pos]
indeksu .
regex_token_iterator::p ointer
Typ wskaźnika do dopasowania.
typedef sub_match<BidIt> *pointer;
Uwagi
Typ jest synonimem sub_match<BidIt>*
, gdzie BidIt
jest parametrem szablonu.
regex_token_iterator::reference
Typ odwołania do podmatu.
typedef sub_match<BidIt>& reference;
Uwagi
Typ jest synonimem sub_match<BidIt>&
, gdzie BidIt
jest parametrem szablonu.
regex_token_iterator::regex_token_iterator
Konstruuje 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);
Parametry
pierwszy
Początek sekwencji do dopasowania.
ostatni
Koniec sekwencji, która ma być zgodna.
Ponownie
Wyrażenie regularne dla dopasowań.
f
Flagi dopasowań.
Uwagi
Pierwszy konstruktor tworzy iterator końca sekwencji.
Drugi konstruktor konstruuje obiekt, którego przechowywany iterator it
jest inicjowany do regex_iterator<BidIt, Elem, RXtraits>(first, last, re, f)
obiektu , którego wektor subs
składowany zawiera dokładnie jedną liczbę całkowitą z wartością submatch
, i której przechowywana wartość pos
wynosi zero. Uwaga: wynikowy obiekt wyodrębnia podmatcz zidentyfikowany przez wartość submatch
indeksu dla każdego pomyślnego dopasowania wyrażenia regularnego.
Trzeci konstruktor konstruuje obiekt, którego przechowywany iterator it
jest inicjowany do regex_iterator<BidIt, Elem, RXtraits>(first, last, re, f)
, którego przechowywany wektor subs
zawiera kopię argumentu submatches
konstruktora , i którego przechowywana wartość pos
to zero.
Czwarty konstruktor tworzy obiekt, którego przechowywany iterator it
jest inicjowany do regex_iterator<BidIt, Elem, RXtraits>(first, last, re, f)
, którego przechowywany wektor subs
zawiera N
wartości wskazywane przez argument submatches
konstruktora , i którego przechowywana wartość pos
wynosi zero.
regex_token_iterator::regex_type
Typ wyrażenia regularnego do dopasowania.
typedef basic_regex<Elem, RXtraits> regex_type;
Uwagi
Typedef jest synonimem .basic_regex<Elem, RXtraits>
regex_token_iterator::value_type
Typ podmatu.
typedef sub_match<BidIt> value_type;
Uwagi
Typ jest synonimem sub_match<BidIt>
, gdzie BidIt
jest parametrem szablonu.
Zobacz też
<regex>
regex_constants, klasa
regex_error, klasa
<funkcje wyrażenia regularnego>
regex_iterator, klasa
<Operatory wyrażenia> regularnego
regex_traits, klasa
<definicje typów wyrażeń> regularnych