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 Bidit
typu š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
.