std::sub_match
| Definiert in Header <regex> |
||
| template< class BidirIt > class sub_match; |
(seit C++11) | |
Die Klassenvorlage std::sub_match wird von der regulären Ausdrucks-Engine verwendet, um Zeichenfolgen zu bezeichnen, die von markierten Teil-Ausdrücken übereinstimmen. Ein Treffer ist ein [begin, end)-Paar innerhalb des vom regulären Ausdruck übereinstimmenden Zielbereichs, jedoch mit zusätzlichen Observer-Funktionen zur Verbesserung der Code-Lesbarkeit.
Nur der Standardkonstruktor ist öffentlich zugänglich. Instanzen von std::sub_match werden normalerweise als Teil eines std::match_results-Containers während der Verarbeitung eines der Regex-Algorithmen konstruiert und befüllt.
Die Member-Funktionen geben definierte Standardwerte zurück, es sei denn, das Member matched ist true.
std::sub_match erbt von std::pair<BidirIt, BidirIt>, obwohl es nicht wie ein std::pair-Objekt behandelt werden kann, da Member-Funktionen wie die Zuweisung nicht wie erwartet funktionieren.
Inhalt |
[edit] Typanforderungen
-BidirIt muss die Anforderungen von LegacyBidirectionalIterator erfüllen. |
[edit] Spezialisierungen
Mehrere Spezialisierungen für gängige Zeichensequenztypen werden bereitgestellt
| Definiert in Header
<regex> | |
| Typ | Definition |
std::csub_match
|
std::sub_match<const char*> |
std::wcsub_match
|
std::sub_match<const wchar_t*> |
std::ssub_match
|
std::sub_match<std::string::const_iterator> |
std::wssub_match
|
std::sub_match<std::wstring::const_iterator> |
[edit] Verschachtelte Typen
| Typ | Definition |
iterator
|
BidirIt
|
value_type
|
std::iterator_traits<BidirIt>::value_type |
difference_type
|
std::iterator_traits<BidirIt>::difference_type |
string_type
|
std::basic_string<value_type> |
[edit] Datenmember
| Mitglied | Beschreibung |
| bool matched |
ob diese Übereinstimmung erfolgreich war (öffentliches Mitgliedsobjekt) |
Erbt von std::pair
| BidirIt first |
Start der Übereinstimmungssequenz (öffentliches Mitgliedsobjekt) |
| BidirIt second |
Ein-Posten-Ende der Übereinstimmungssequenz (öffentliches Mitgliedsobjekt) |
[edit] Member-Funktionen
| konstruiert das Übereinstimmungsobjekt (public member function) | |
Observer | |
| gibt die Länge der Übereinstimmung zurück (falls vorhanden) (public member function) | |
| konvertiert in den zugrunde liegenden String-Typ (public member function) | |
| vergleicht die übereinstimmende Teilsequenz (falls vorhanden) (public member function) | |
Modifizierer | |
| tauscht die Inhalte (public member function) | |
[edit] Nicht-Member-Funktionen
| (entfernt in C++20)(entfernt in C++20)(entfernt in C++20)(entfernt in C++20)(entfernt in C++20)(C++20) |
vergleicht ein sub_match mit einem anderen sub_match, einem String oder einem Zeichen(Funktionstemplate) |
| gibt die übereinstimmende Zeichenteilsequenz aus (function template) |
[edit] Beispiel
#include <cassert> #include <iostream> #include <regex> #include <string> int main() { std::string sentence{"Friday the thirteenth."}; const std::regex re{"([A-z]+) ([a-z]+) ([a-z]+)"}; std::smatch words; std::regex_search(sentence, words, re); std::cout << std::boolalpha; for (const auto& m : words) { assert(m.matched); std::cout << "m: [" << m << "], m.length(): " << m.length() << ", " "*m.first: '" << *m.first << "', " "*m.second: '" << *m.second << "'\n"; } }
Ausgabe
m: [Friday the thirteenth], m.length(): 21, *m.first: 'F', *m.second: '.' m: [Friday], m.length(): 6, *m.first: 'F', *m.second: ' ' m: [the], m.length(): 3, *m.first: 't', *m.second: ' ' m: [thirteenth], m.length(): 10, *m.first: 't', *m.second: '.'
[edit] Siehe auch
| (C++11) |
iteriert durch die angegebenen Unterausdrücke innerhalb aller Regex-Übereinstimmungen in einer gegebenen Zeichenkette oder durch nicht übereinstimmende Teilzeichenketten (Klassenvorlage) |