Freigeben über


sub_match-Klasse

Beschreibt eine Teilübereinstimmung.

Syntax

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

Parameter

BidIt
Der Itertatortyp für Teilübereinstimmungen.

Hinweise

Die Klassenvorlage beschreibt ein Objekt, das eine Abfolge von Zeichen angibt, die einer Aufnahmegruppe in einem Aufruf von regex_match oder regex_search entsprechen. Objekte des Typs match_results Class enthalten ein Array dieser Objekte, eines für jede Erfassungsgruppe im regulären Ausdruck, der in der Suche verwendet wurde.

Wenn die Aufnahmegruppe nicht mit dem Datenmember matched des Objekts übereinstimmt, enthält "false", und die beiden Iteratoren first und second (geerbt von der Basis std::pair) sind gleich. Gab es eine Übereinstimmung mit der Erfassungsgruppe, ist matched gleich „true“, der Iterator first zeigt auf das erste Zeichen in der Zielsequenz, die mit der Erfassungsgruppe übereinstimmte, und der Iterator second zeigt auf die erste Position hinter dem letzten Zeichen in der Zielsequenz, die mit der Erfassungsgruppe übereinstimmte. Bei einer Übereinstimmung der Länge Null hält das Element matched "true", die beiden Iteratoren sind gleich, und beide zeigen auf die Position der Übereinstimmung.

Eine Übereinstimmung der Länge 0 (null) kann auftreten, wenn eine Erfassungsgruppe ausschließlich aus einer Assertion oder aus einer Wiederholung besteht, die 0 (null) Wiederholungen zulässt. Zum Beispiel:

„^“ stimmt mit der Zielsequenz „a“ überein; das sub_match -Objekt, das der Erfassungsgruppe 0 entspricht, enthält Iteratoren, die beide auf das erste Zeichen in der Sequenz zeigen.

„b(a*)b“ stimmt mit der Zielsequenz „bb“ überein; das sub_match -Objekt, das der Erfassungsgruppe 1 entspricht, enthält Iteratoren, die beide auf das zweite Zeichen in der Sequenz zeigen.

TypeDefs

Typname Beschreibung
difference_type Der Typ einer Iteratordifferenz.
iterator Der Typ eines Iterators.
value_type Der Typ eines Elements.

Memberfunktionen

Memberfunktion Beschreibung
compare Vergleichen einer Teilübereinstimmung mit einer Sequenz.
length Gibt die Länge einer Teilübereinstimmung zurück.
paarig Gibt an, ob eine Übereinstimmung erfolgreich war.
str Konvertiert eine Teilübereinstimmung in eine Zeichenfolge.

Operatoren

Operator Beschreibung
operator basic_string value_type<> Wandelt eine Teilübereinstimmung in eine Zeichenfolge um.

Beispiel

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

Anforderungen

Header:<regex>

Namespace: std

sub_match::compare

Vergleichen einer Teilübereinstimmung mit einer Sequenz.

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

Parameter

right
Die Teilübereinstimmung, mit der verglichen werden soll.

str
Die Zeichenfolge, mit der verglichen wird.

ptr
Die mit NULL endende Sequenz, mit der verglichen werden soll.

Hinweise

Die erste Memberfunktion vergleicht die passende Sequenz [first, second) mit der übereinstimmenden Sequenz [right.first, right.second). Die zweite Memberfunktion vergleicht die passende Sequenz [first, second) mit der Zeichensequenz [right.begin(), right.end()). Die dritte Memberfunktion vergleicht die passende Sequenz [first, second) mit der Zeichensequenz [right, right + std::char_traits<value_type>::length(right)).

Jede Funktion gibt Folgendes zurück:

einen negativen Wert, wenn der erste abweichende Wert in der passenden Sequenz weniger als das entsprechende Element in der Operandensequenz vergleicht (wie von std::char_traits<value_type>::compare vorgegeben), oder wenn die beiden ein gemeinsames Präfix besitzen, die Zielsequenz jedoch länger ist

NULL, wenn die beiden Vergleichswerte elementweise identisch sind und die gleiche Länge haben

Andernfalls ein positiver Wert

sub_match::d ifference_type

Der Typ einer Iteratordifferenz.

typedef typename iterator_traits<BidIt>::difference_type difference_type;

Hinweise

Die Typedef ist ein Synonym für iterator_traits<BidIt>::difference_type.

sub_match::iterator

Der Typ eines Iterators.

typedef BidIt iterator;

Hinweise

Die Typedef stellt ein Synonym für das Vorlagentypargument Bidit dar.

sub_match::length

Gibt die Länge einer Teilübereinstimmung zurück.

difference_type length() const;

Hinweise

Die Memberfunktion gibt die Länge der übereinstimmenden Sequenz oder null zurück, wenn es keine passende Sequenz gab.

sub_match::matched

Gibt an, ob eine Übereinstimmung erfolgreich war.

bool matched;

Hinweise

Der Member nimmt true nur auf, wenn die *this zugeordnete Erfassungsgruppe Teil der Übereinstimmung des regulären Ausdrucks war.

sub_match::operator basic_string<value_type>

Wandelt eine Teilübereinstimmung in eine Zeichenfolge um.

operator basic_string<value_type>() const;

Hinweise

Der Memberoperator gibt str()zurück.

sub_match::str

Konvertiert eine Teilübereinstimmung in eine Zeichenfolge.

basic_string<value_type> str() const;

Hinweise

Die Memberfunktion gibt basic_string<value_type>(first, second) zurück.

sub_match::value_type

Der Typ eines Elements.

typedef typename iterator_traits<BidIt>::value_type value_type;

Hinweise

Die Typedef ist ein Synonym für iterator_traits<BidIt>::value_type.

Siehe auch

<regex>
sub_match