Udostępnij za pośrednictwem


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 submatcheskonstruktora , 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 submatcheskonstruktora , 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