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 match
archiviato.
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.end
pregex == 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 &re
e 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>