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
.