std::sub_match< _BiIter > Class Template Reference
Regular Expressions

`#include <regex.h>`

Inheritance diagram for std::sub_match< _BiIter >:
[legend]

## Public Types

typedef __iter_traits::difference_type | difference_type
typedef _BiIter | first_type
typedef _BiIter | iterator
typedef _BiIter | second_type
typedef basic_string< value_type > | string_type
typedef __iter_traits::value_type | value_type

## Public Member Functions

int | compare (const sub_match &__s) const
difference_type | length () const noexcept
| operator string_type () const
string_type | str () const
constexpr void | swap (pair &__p) noexcept(__and_< __is_nothrow_swappable< _BiIter >, __is_nothrow_swappable< _BiIter > >::value)
int | compare (const string_type &__s) const
int | compare (const value_type *__s) const

## Public Attributes

_BiIter | first
bool | matched
_BiIter | second

## Related Symbols

(Note that these are not member symbols.)
template<typename _BiIter>
bool | operator== (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _BiIter>
bool | operator!= (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _BiIter>
bool | operator< (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _BiIter>
bool | operator<= (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _BiIter>
bool | operator>= (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _BiIter>
bool | operator> (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator== (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator!= (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator< (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator> (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator>= (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator<= (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator== (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator!= (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator< (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator> (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator>= (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
bool | operator<= (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter>
bool | operator== (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator!= (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator< (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator> (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator>= (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator<= (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator== (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter>
bool | operator!= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter>
bool | operator< (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter>
bool | operator> (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter>
bool | operator>= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter>
bool | operator<= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter>
bool | operator== (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator!= (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator< (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator> (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator>= (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator<= (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter>
bool | operator== (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Bi_iter>
bool | operator!= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Bi_iter>
bool | operator< (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Bi_iter>
bool | operator> (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Bi_iter>
bool | operator>= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Bi_iter>
bool | operator<= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Ch_type, typename _Ch_traits, typename _Bi_iter>
basic_ostream< _Ch_type, _Ch_traits > & | operator<< (basic_ostream< _Ch_type, _Ch_traits > &__os, const sub_match< _Bi_iter > &__m)
constexpr bool | operator== (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator== (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator< (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator< (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator!= (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator!= (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator> (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator> (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator<= (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator<= (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator>= (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator>= (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr enable_if< __and_< __is_swappable< _BiIter >, __is_swappable< _BiIter > >::value >::type | swap (pair< _BiIter, _BiIter > &__x, pair< _BiIter, _BiIter > &__y) noexcept(noexcept(__x.swap(__y)))
constexpr enable_if< __and_< __is_swappable< _BiIter >, __is_swappable< _BiIter > >::value >::type | swap (pair< _BiIter, _BiIter > &__x, pair< _BiIter, _BiIter > &__y) noexcept(noexcept(__x.swap(__y)))

## Detailed Description

template<typename _BiIter>
class std::sub_match< _BiIter >

A sequence of characters matched by a particular marked sub-expression.

An object of this class is essentially a pair of iterators marking a matched subexpression within a regular expression pattern match. Such objects can be converted to and compared with std::basic_string objects of a similar base character type as the pattern matched by the regular expression.

The iterators that make up the pair are the usual half-open interval referencing the actual original pattern matched.

Definition at line 891 of file regex.h.

## Member Typedef Documentation

## difference_type

template<typename _BiIter>

typedef __iter_traits::difference_type std::sub_match< _BiIter >::difference_type

Definition at line 897 of file regex.h.

## first_type

typedef _BiIter std::pair< _BiIter, _BiIter >::first_type

inherited

The type of the first member.

Definition at line 214 of file stl_pair.h.

## iterator

template<typename _BiIter>

typedef _BiIter std::sub_match< _BiIter >::iterator

Definition at line 898 of file regex.h.

## second_type

typedef _BiIter std::pair< _BiIter, _BiIter >::second_type

inherited

The type of the second member.

Definition at line 215 of file stl_pair.h.

## string_type

template<typename _BiIter>

typedef basic_string<value_type> std::sub_match< _BiIter >::string_type

Definition at line 899 of file regex.h.

## value_type

template<typename _BiIter>

typedef __iter_traits::value_type std::sub_match< _BiIter >::value_type

Definition at line 896 of file regex.h.

## Constructor & Destructor Documentation

## sub_match()

template<typename _BiIter>

std::sub_match< _BiIter >::sub_match | ( |  | ) |

inline constexpr noexcept

Definition at line 903 of file regex.h.

## Member Function Documentation

## compare() [1/3]

template<typename _BiIter>

int std::sub_match< _BiIter >::compare | ( | const string_type & | __s | ) | const

inline

Compares this sub_match to a string.

Parameters

  __s | A string to compare to this sub_match.

Return values

  negative | This matched sequence will collate before __s.
  zero | This matched sequence is equivalent to __s.
  positive | This matched sequence will collate after __s.

Definition at line 960 of file regex.h.

## compare() [2/3]

template<typename _BiIter>

int std::sub_match< _BiIter >::compare | ( | const sub_match< _BiIter > & | __s | ) | const

inline

Compares this and another matched sequence.

Parameters

  __s | Another matched sequence to compare to this one.

Return values

  negative | This matched sequence will collate before __s.
  zero | This matched sequence is equivalent to __s.
  positive | This matched sequence will collate after __s.

Definition at line 946 of file regex.h.

Referenced by std::sub_match< const char * >::operator!=(), std::sub_match< const char * >::operator<(), std::sub_match< const char * >::operator<(), std::sub_match< const char * >::operator<(), std::sub_match< const char * >::operator<=(), std::sub_match< const char * >::operator==(), std::sub_match< const char * >::operator==(), std::sub_match< const char * >::operator==(), std::sub_match< const char * >::operator>(), and std::sub_match< const char * >::operator>=().

## compare() [3/3]

template<typename _BiIter>

int std::sub_match< _BiIter >::compare | ( | const value_type * | __s | ) | const

inline

Compares this sub_match to a string.

Parameters

  __s | A string to compare to this sub_match.

Return values

  negative | This matched sequence will collate before __s.
  zero | This matched sequence is equivalent to __s.
  positive | This matched sequence will collate after __s.

Definition at line 964 of file regex.h.

## length()

template<typename _BiIter>

difference_type std::sub_match< _BiIter >::length | ( |  | ) | const

inline noexcept

Gets the length of the matching sequence.

Definition at line 907 of file regex.h.

## operator string_type()

template<typename _BiIter>

std::sub_match< _BiIter >::operator string_type | ( |  | ) | const

inline

Gets the matching sequence as a string.

Returns
  the matching sequence as a string.

This is the implicit conversion operator. It is identical to the str() member function except that it will want to pop up in unexpected places and cause a great deal of confusion and cursing from the unwary.

Definition at line 920 of file regex.h.

## str()

template<typename _BiIter>

string_type std::sub_match< _BiIter >::str | ( |  | ) | const

inline

Gets the matching sequence as a string.

Returns
  the matching sequence as a string.

Definition at line 929 of file regex.h.

Referenced by std::sub_match< const char * >::operator string_type().

## swap()

void std::pair< _BiIter, _BiIter >::swap | ( | pair< _BiIter, _BiIter > & | __p | ) |

inline constexpr noexcept inherited

Swap the first members and then the second members.

Definition at line 439 of file stl_pair.h.

## Friends And Related Symbol Documentation

## operator!=() [1/2]

bool operator!= | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Uses `operator==` to find the result.

Definition at line 496 of file stl_pair.h.

## operator!=() [2/2]

bool operator!= | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Uses `operator==` to find the result.

Definition at line 496 of file stl_pair.h.

## operator<() [1/2]

bool operator< | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Defines a lexicographical order for pairs.

For two pairs of the same type, P is ordered before Q if P.first is less than Q.first, or if P.first and Q.first are equivalent (neither is less than the other) and P.second is less than Q.second.

Definition at line 488 of file stl_pair.h.

## operator<() [2/2]

bool operator< | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Defines a lexicographical order for pairs.

For two pairs of the same type, P is ordered before Q if P.first is less than Q.first, or if P.first and Q.first are equivalent (neither is less than the other) and P.second is less than Q.second.

Definition at line 488 of file stl_pair.h.

## operator<=() [1/2]

bool operator<= | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Uses `operator<` to find the result.

Definition at line 507 of file stl_pair.h.

## operator<=() [2/2]

bool operator<= | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Uses `operator<` to find the result.

Definition at line 507 of file stl_pair.h.

## operator==() [1/2]

bool operator== | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Two pairs of the same type are equal iff their members are equal.

Definition at line 466 of file stl_pair.h.

## operator==() [2/2]

bool operator== | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Two pairs of the same type are equal iff their members are equal.

Definition at line 466 of file stl_pair.h.

## operator>() [1/2]

bool operator> | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Uses `operator<` to find the result.

Definition at line 502 of file stl_pair.h.

## operator>() [2/2]

bool operator> | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Uses `operator<` to find the result.

Definition at line 502 of file stl_pair.h.

## operator>=() [1/2]

bool operator>= | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Uses `operator<` to find the result.

Definition at line 514 of file stl_pair.h.

## operator>=() [2/2]

bool operator>= | ( | const pair< _BiIter, _BiIter > & | __x,
|  | const pair< _BiIter, _BiIter > & | __y )

related

Uses `operator<` to find the result.

Definition at line 514 of file stl_pair.h.

## swap() [1/2]

enable_if< __and_< __is_swappable< _BiIter >, __is_swappable< _BiIter > >::value >::type swap | ( | pair< _BiIter, _BiIter > & | __x,
|  | pair< _BiIter, _BiIter > & | __y )

related

Swap overload for pairs. Calls std::pair::swap().

Note
  This std::swap overload is not declared in C++03 mode, which has performance implications, e.g. see https://gcc.gnu.org/PR38466

Definition at line 533 of file stl_pair.h.

## swap() [2/2]

enable_if< __and_< __is_swappable< _BiIter >, __is_swappable< _BiIter > >::value >::type swap | ( | pair< _BiIter, _BiIter > & | __x,
|  | pair< _BiIter, _BiIter > & | __y )

related

Swap overload for pairs. Calls std::pair::swap().

Note
  This std::swap overload is not declared in C++03 mode, which has performance implications, e.g. see https://gcc.gnu.org/PR38466

Definition at line 533 of file stl_pair.h.

## Member Data Documentation

## first

_BiIter std::pair< _BiIter, _BiIter >::first

inherited

The first member.

Definition at line 217 of file stl_pair.h.

## matched

template<typename _BiIter>

bool std::sub_match< _BiIter >::matched

Definition at line 901 of file regex.h.

## second

_BiIter std::pair< _BiIter, _BiIter >::second

inherited

The second member.

Definition at line 218 of file stl_pair.h.

The documentation for this class was generated from the following file:

- regex.h