Condividi tramite


Classe regex_iterator

Classe iterator per le corrispondenze.

Sintassi

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

Parametri

BidIt
Tipo di iteratore per le sottocorrispondenze.

Elem
Tipo di elementi di cui trovare una corrispondenza.

RXtraits
Classe traits per gli elementi.

Osservazioni:

Il modello di classe descrive un oggetto iteratore in avanti costante. Estrae gli oggetti di tipo match_results<BidIt> applicando ripetutamente il relativo oggetto di espressione regolare *pregex alla sequenza di caratteri definita dall'intervallo dell'iteratore [begin, end).

Costruttori

Costruttore Descrizione
regex_iterator Costruisce l'iteratore.

Typedef

Nome tipo Descrizione
difference_type Tipo di differenza iteratore.
iterator_category Tipo della categoria di iteratore.
pointer Tipo di un puntatore a una corrispondenza.
reference Tipo di un riferimento a una corrispondenza.
regex_type Tipo dell'espressione regolare per cui cercare una corrispondenza.
value_type Tipo di una corrispondenza.

Operatori

Operatore Descrizione
operator!= Confronta gli iteratori per verificarne la disuguaglianza.
operator* Accede alla corrispondenza designata.
operator++ Incrementa l'iteratore.
operator= Confronta gli iteratori per verificarne l'uguaglianza.
operator-> Accede alla corrispondenza designata.

Requisiti

Header:<regex>

Spazio dei nomi: std

Esempi

Vedere gli articoli seguenti per esempi sulle espressioni regolari:

// 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

Tipo di differenza iteratore.

typedef std::ptrdiff_t difference_type;

Osservazioni:

Il tipo è sinonimo di std::ptrdiff_t.

regex_iterator::iterator_category

Tipo della categoria di iteratore.

typedef std::forward_iterator_tag iterator_category;

Osservazioni:

Il tipo è sinonimo di std::forward_iterator_tag.

regex_iterator::operator!=

Confronta gli iteratori per verificarne la disuguaglianza.

bool operator!=(const regex_iterator& right);

Parametri

right
Iteratore per il confronto.

Osservazioni:

La funzione membro restituisce!(*this == right).

regex_iterator::operator*

Accede alla corrispondenza designata.

const match_results<BidIt>& operator*();

Osservazioni:

La funzione membro restituisce il valore matcharchiviato.

regex_iterator::operator++

Incrementa l'iteratore.

regex_iterator& operator++();
regex_iterator& operator++(int);

Osservazioni:

Se la corrispondenza corrente non contiene caratteri, il primo operatore chiama regex_search(begin, end, match, *pregex, flags | regex_constants::match_prev_avail | regex_constants::match_not_null); in caso contrario, sposta il valore begin archiviato in modo che punti al primo carattere dopo la corrispondenza corrente, chiama regex_search(begin, end, match, *pregex, flags | regex_constants::match_prev_avail). Se la ricerca ha esito negativo, l'operatore imposta l'oggetto su un iteratore di fine sequenza. L'operatore restituisce l'oggetto.

Il secondo operatore esegue una copia dell'oggetto, incrementa l'oggetto, quindi restituisce la copia.

regex_iterator::operator=

Confronta gli iteratori per verificarne l'uguaglianza.

bool operator==(const regex_iterator& right);

Parametri

right
Iteratore per il confronto.

Osservazioni:

La funzione membro restituisce true se *this e right sono entrambi iteratori di fine sequenza o se nessuno dei due è un iteratore di fine sequenza e begin == right.begin, end == right.endpregex == right.pregex, e flags == right.flags. In caso contrario, la funzione restituisce false.

regex_iterator::operator->

Accede alla corrispondenza designata.

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

Osservazioni:

La funzione membro restituisce l'indirizzo del valore archiviato match.

regex_iterator::p ointer

Tipo di un puntatore a una corrispondenza.

typedef match_results<BidIt> *pointer;

Osservazioni:

Il tipo è un sinonimo di match_results<BidIt>*, dove BidIt è il parametro di modello.

regex_iterator::reference

Tipo di un riferimento a una corrispondenza.

typedef match_results<BidIt>& reference;

Osservazioni:

Il tipo è un sinonimo di match_results<BidIt>&, dove BidIt è il parametro di modello.

regex_iterator::regex_iterator

Costruisce l'iteratore.

regex_iterator();

regex_iterator(BidIt first,
    BidIt last,
    const regex_type& re,
    regex_constants::match_flag_type f = regex_constants::match_default);

Parametri

first
Inizio della sequenza per cui cercare una corrispondenza.

last
Fine della sequenza per cui cercare una corrispondenza.

ri
Espressione regolare per le corrispondenze.

f
Flag per le corrispondenze.

Osservazioni:

Il primo costruttore crea un iteratore di fine sequenza. Il secondo costruttore inizializza il valore begin archiviato con il primo, il valore end archiviato con l'ultimo, il valore pregex archiviato con &ree il valore flags archiviato con f. Quindi chiama regex_search(begin, end, match, *pregex, flags). Se la ricerca ha esito negativo, il costruttore imposta l'oggetto su un iteratore di fine sequenza.

regex_iterator::regex_type

Tipo dell'espressione regolare per cui cercare una corrispondenza.

typedef basic_regex<Elem, RXtraits> regex_type;

Osservazioni:

typedef è sinonimo di basic_regex<Elem, RXtraits>.

regex_iterator::value_type

Tipo di una corrispondenza.

typedef match_results<BidIt> value_type;

Osservazioni:

Il tipo è un sinonimo di match_results<BidIt>, dove BidIt è il parametro di modello.

Vedi anche

<regex>
Classe regex_constants
Classe regex_error
<funzioni regex>
Classe regex_iterator
<Operatori regex>
Classe regex_token_iterator
Classe regex_traits
<typedef regex>