Partager via


regex_token_iterator, classe

Classe d’itérateur pour les sous-correspondances.

Syntaxe

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

Paramètres

BidIt
Type d'itérateur pour les sous-correspondances.

Elem
Type des éléments à faire correspondre.

RXtraits
Classe Traits des éléments.

Notes

Le modèle de classe décrit un objet itérateur de transfert constant. D’un point de vue conceptuel, elle contient un objet regex_iterator utilisé pour la recherche d’expressions régulières dans une séquence de caractères. Elle extrait des objets de type sub_match<BidIt> représentant les sous-correspondances identifiées par les valeurs d’index dans le vecteur stocké subs pour chaque correspondance d’expression régulière.

La valeur d’index -1 désigne la séquence de caractères qui commence immédiatement après la fin de la correspondance d’expression régulière précédente, ou le début de la séquence de caractères en l’absence de correspondance d’expression régulière précédente. Par ailleurs, la séquence s’étend jusqu’au premier caractère (sans l’inclure) de la correspondance d’expression régulière actuelle, ou jusqu’à la fin de la séquence de caractères en l’absence de correspondance actuelle. Toute autre valeur d’index idx désigne le contenu du groupe de capture situé dans it.match[idx].

Membres

Membre Valeur par défaut
private regex_iterator<BidIt, Elem, RXtraits> it
private vector<int> subs
private int pos

Constructeurs

Constructeur Description
regex_token_iterator Construit l’itérateur.

Typedefs

Nom de type Description
difference_type Type d’une différence d’itérateur.
iterator_category Type de la catégorie d'itérateur.
pointer Type d'un pointeur vers une correspondance.
référence Type d’une référence à une sous-correspondance.
regex_type Type de l’expression régulière à mettre en correspondance.
value_type Type d’une sous-correspondance.

Opérateurs

Opérateur Description
operator!= Compare l’inégalité d’itérateurs.
operator* Accède à la sous-correspondance désignée.
operator++ Incrémente l'itérateur.
operator== Compare des itérateurs pour déterminer s’ils sont égaux.
operator-> Accède à la sous-correspondance désignée.

Spécifications

Header :<regex>

Espace de noms : std

Exemple

#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

Type d’une différence d’itérateur.

typedef std::ptrdiff_t difference_type;

Notes

Le type est un synonyme de std::ptrdiff_t.

regex_token_iterator ::iterator_category

Type de la catégorie d'itérateur.

typedef std::forward_iterator_tag iterator_category;

Notes

Le type est un synonyme de std::forward_iterator_tag.

regex_token_iterator ::operator !=

Compare l’inégalité d’itérateurs.

bool operator!=(const regex_token_iterator& right);

Paramètres

right
Itérateur auquel comparer.

Notes

La fonction membre retourne !(*this == right).

regex_token_iterator ::operator*

Accède à la sous-correspondance désignée.

const sub_match<BidIt>& operator*();

Notes

La fonction membre retourne un objet sub_match<BidIt> représentant le groupe de capture identifié par la valeur d’index subs[pos].

regex_token_iterator ::operator++

Incrémente l'itérateur.

regex_token_iterator& operator++();

regex_token_iterator& operator++(int);

Notes

Si l'itérateur stocké it est un itérateur de fin de séquence, le premier opérateur définit la valeur stockée pos à la valeur de subs.size() (ce qui crée un itérateur de fin de séquence). Sinon, l'opérateur incrémente la valeur stockée pos ; si le résultat est égal à la valeur subs.size(), il définit la valeur stockée pos à zéro et incrémente l'itérateur stocké it. Si, suite à son incrémentation, l'itérateur est inégal à un itérateur de fin de séquence, l'opérateur ne fait rien de plus. Sinon, si la fin de la correspondance précédente était à la fin de la séquence de caractères, l'opérateur définit la valeur stockée de pos à subs.size(). Sinon, l'opérateur incrémente de manière répétée la valeur stockée pos jusqu'à pos == subs.size() ou subs[pos] == -1 (garantissant ainsi que le déréférencement suivant de l'itérateur retournera la fin de la séquence de caractères si l'une des valeurs d'index est -1). Dans tous les cas, l'opérateur retourne l'objet.

Le deuxième opérateur effectue une copie de l'objet, incrémente l'objet, puis retourne la copie.

regex_token_iterator ::operator==

Compare des itérateurs pour déterminer s’ils sont égaux.

bool operator==(const regex_token_iterator& right);

Paramètres

right
Itérateur auquel comparer.

Notes

La fonction membre retourne it == right.it && subs == right.subs && pos == right.pos.

regex_token_iterator::operator->

Accède à la sous-correspondance désignée.

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

Notes

La fonction membre retourne un pointeur vers un objet sub_match<BidIt> représentant le groupe de capture identifié par la valeur d’index subs[pos].

regex_token_iterator ::p ointer

Type d'un pointeur vers une correspondance.

typedef sub_match<BidIt> *pointer;

Notes

Le type est un synonyme de sub_match<BidIt>*, où BidIt est le paramètre de modèle.

regex_token_iterator ::reference

Type d’une référence à une sous-correspondance.

typedef sub_match<BidIt>& reference;

Notes

Le type est un synonyme de sub_match<BidIt>&, où BidIt est le paramètre de modèle.

regex_token_iterator ::regex_token_iterator

Construit l’itérateur.

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);

Paramètres

first
Début de la séquence à mettre en correspondance.

last
Fin de la séquence à mettre en correspondance.

Re
Expression régulière pour les correspondances.

f
Indicateurs pour les correspondances.

Notes

Le premier constructeur construit un itérateur de fin de séquence.

Le second constructeur construit un objet dont l’itérateur stocké it est initialisé à regex_iterator<BidIt, Elem, RXtraits>(first, last, re, f), dont le vecteur stocké subs contient seulement un entier, ayant la valeur submatch, et dont la valeur stockée pos est égale à zéro. Remarque : l’objet résultant extrait la sous-correspondance identifiée par la valeur d’index submatch pour chaque correspondance d’expression régulière réussie.

Le troisième constructeur construit un objet dont l’itérateur stocké it est initialisé à regex_iterator<BidIt, Elem, RXtraits>(first, last, re, f), dont le vecteur stocké subs contient une copie de l’argument de constructeur submatches, et dont la valeur stockée pos est égale à zéro.

Le quatrième constructeur construit un objet dont l’itérateur stocké it est initialisé à regex_iterator<BidIt, Elem, RXtraits>(first, last, re, f), dont le vecteur stocké subs contient les valeurs N vers lesquelles pointe l’argument de constructeur submatches, et dont la valeur stockée pos est égale à zéro.

regex_token_iterator ::regex_type

Type de l’expression régulière à mettre en correspondance.

typedef basic_regex<Elem, RXtraits> regex_type;

Notes

Le typedef est un synonyme de basic_regex<Elem, RXtraits>.

regex_token_iterator ::value_type

Type d’une sous-correspondance.

typedef sub_match<BidIt> value_type;

Notes

Le type est un synonyme de sub_match<BidIt>, où BidIt est le paramètre de modèle.

Voir aussi

<regex>
regex_constants, classe
regex_error, classe
<fonctions regex>
regex_iterator, classe
<opérateurs regex>
regex_traits, classe
<regex> typedefs