Sdílet prostřednictvím


sub_match – třída

Popisuje podsložku.

Syntaxe

template <class BidIt>
class sub_match
    : public std::pair<BidIt, BidIt>

Parametry

BidIt
Typ iterátoru pro podsložky.

Poznámky

Šablona třídy popisuje objekt, který určuje posloupnost znaků, které odpovídají skupině zachycení ve volání regex_match nebo regex_search. Objekty typu match_results Třída obsahují pole těchto objektů, jednu pro každou skupinu zachycení v regulárním výrazu, který byl použit při hledání.

Pokud se skupina zachycení neshodovala s datovým členem matched objektu, obsahuje hodnotu false a dva iterátory first a second (zděděné ze základu std::pair) jsou stejné. Pokud se skupina zachycení shodovala, matched má hodnotu true, iterátor first odkazuje na první znak v cílové sekvenci, která odpovídala skupině zachycení, a iterátor second odkazuje na jednu pozici za poslední znak v cílové sekvenci, která odpovídala skupině zachycení. U shody s nulovou délkou má člen matched hodnotu true, dva iterátory budou stejné a oba budou odkazovat na pozici shody.

Shoda nulové délky může nastat, když se skupina zachycení skládá výhradně z kontrolního výrazu nebo opakování, které umožňuje nulové opakování. Příklad:

^odpovídá cílové sekvenci "a"; sub_match objekt odpovídající skupině zachycení 0 obsahuje iterátory, které oba odkazují na první znak v sekvenci.

"b(a*)b" odpovídá cílové sekvenci "bb"; sub_match objekt odpovídající skupině zachycení 1 obsahuje iterátory, které oba odkazují na druhý znak v sekvenci.

Typedefs

Název typu Popis
difference_type Typ rozdílu iterátoru.
iterátor Typ iterátoru.
value_type Typ prvku

Členské funkce

Členová funkce Popis
porovnat Porovnejte podsekvenci s posloupností.
length Vrátí délku podsoučtu.
slícovaný Označuje, jestli byla shoda úspěšná.
Str Převede podsložku na řetězec.

Operátory

Operátor Popis
operátor basic_string value_type<> Přetypuje podsložku na řetězec.

Příklad

// std__regex__sub_match.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>

int main()
    {
    std::regex rx("c(a*)|(b)");
    std::cmatch mr;

    std::regex_search("xcaaay", mr, rx);

    std::csub_match sub = mr[1];
    std::cout << "matched == " << std::boolalpha
        << sub.matched << std::endl;
    std::cout << "length == " << sub.length() << std::endl;

    std::csub_match::difference_type dif = std::distance(sub.first, sub.second);
    std::cout << "difference == " << dif << std::endl;

    std::csub_match::iterator first = sub.first;
    std::csub_match::iterator last = sub.second;
    std::cout << "range == " << std::string(first, last)
        << std::endl;
    std::cout << "string == " << sub << std::endl;

    std::csub_match::value_type const *ptr = "aab";
    std::cout << "compare(\"aab\") == "
        << sub.compare(ptr) << std::endl;
    std::cout << "compare(string) == "
        << sub.compare(std::string("AAA")) << std::endl;
    std::cout << "compare(sub) == "
        << sub.compare(sub) << std::endl;

    return (0);
    }
matched == true
length == 3
difference == 3
range == aaa
string == aaa
compare("aab") == -1
compare(string) == 1
compare(sub) == 0

Požadavky

Header:<regex>

Namespace: std

sub_match::compare

Porovnejte podsekvenci s posloupností.

int compare(const sub_match& right) const;
int compare(const basic_string<value_type>& str) const;
int compare(const value_type *ptr) const;

Parametry

Vpravo
Podsoučty, které se mají porovnat.

Str
Řetězec, který se má porovnat.

ptr
Sekvenci s ukončenou hodnotou null, která se má porovnat.

Poznámky

První člen funkce porovnává shodnou sekvenci s odpovídající sekvencí [first, second) [right.first, right.second). Druhá členová funkce porovnává sekvenci sekvencí [first, second) [right.begin(), right.end())znaků . Třetí člen funkce porovnává shodnou sekvenci [first, second) [right, right + std::char_traits<value_type>::length(right))znaků .

Každá funkce vrátí:

záporná hodnota, pokud první rozdílová hodnota v odpovídající sekvenci porovnává menší než odpovídající prvek v sekvenci operandu (podle určení std::char_traits<value_type>::compare), nebo pokud obě mají společnou předponu, ale cílová sekvence je delší

nula, pokud dva porovnávají stejný prvek podle elementu a mají stejnou délku

kladná hodnota v opačném případě

sub_match::d ifference_type

Typ rozdílu iterátoru.

typedef typename iterator_traits<BidIt>::difference_type difference_type;

Poznámky

Typedef je synonymem pro iterator_traits<BidIt>::difference_type.

sub_match::iterator

Typ iterátoru.

typedef BidIt iterator;

Poznámky

Typedef je synonymem pro argument Bidittypu šablony .

sub_match::length

Vrátí délku podsoučtu.

difference_type length() const;

Poznámky

Členová funkce vrátí délku odpovídající sekvence nebo nulu, pokud nebyla nalezena odpovídající sekvence.

sub_match::matched

Označuje, jestli byla shoda úspěšná.

bool matched;

Poznámky

Člen uchovává true pouze v případě, že skupina zachycení přidružená *this k regulárnímu výrazu byla součástí shody regulárního výrazu.

sub_match::operator basic_string<value_type>

Přetypuje podsložku na řetězec.

operator basic_string<value_type>() const;

Poznámky

Operátor členu vrátí str().

sub_match::str

Převede podsložku na řetězec.

basic_string<value_type> str() const;

Poznámky

Členová funkce vrátí basic_string<value_type>(first, second).

sub_match::value_type

Typ prvku

typedef typename iterator_traits<BidIt>::value_type value_type;

Poznámky

Typedef je synonymem pro iterator_traits<BidIt>::value_type.

Viz také

<regex>
sub_match