class template
std::sub_match(C++11)
namespace std {
template <class BidirectionalIterator>
class sub_match : public pair<BidirectionalIterator, BidirectionalIterator>;
using csub_match = sub_match<const char*>;
using wcsub_match = sub_match<const wchar_t*>;
using ssub_match = sub_match<string::const_iterator>;
using wssub_match = sub_match<wstring::const_iterator>;
}
概要
クラステンプレート sub_match
は、文字列が正規表現にマッチした際に、その正規表現がマッチした範囲、あるいは、その正規表現内のあるグループがマッチした範囲を表す。
sub_match
は pair
から public 継承している。
メンバ関数
注:上記の他、オブジェクトの内容を交換するメンバ関数 swap
もあるが、pair
から継承したものであるため、メンバ変数 matched
の内容は交換しないため注意が必要。
メンバ変数
名前 |
型 |
説明 |
対応バージョン |
first |
BidirectionalIterator |
このサブマッチがマッチに参加している場合、当該サブマッチの開始位置を表す |
C++11 |
second |
BidirectionalIterator |
このサブマッチがマッチに参加している場合、当該サブマッチの終了位置の一つ先を表す |
C++11 |
matched |
bool |
このサブマッチがマッチに参加しているか否かを表す |
C++11 |
メンバ型
名前 |
説明 |
対応バージョン |
value_type |
検索対象の文字の型。iterator_traits<BidirectionalIterator>::value_type の別名 |
C++11 |
difference_type |
2 つのイテレータの差を表すための型。iterator_traits<BidirectionalIterator>::difference_type の別名 |
C++11 |
iterator |
検索対象の文字を指すイテレータの型。BidirectionalIterator の別名 |
C++11 |
string_type |
検索対象の文字の型に対応する文字列型。basic_string<value_type> の別名 |
C++11 |
first_type |
メンバ変数 first の型。pair から継承。BidirectionalIterator の別名 |
C++11 |
second_type |
メンバ変数 second の型。pair から継承。BidirectionalIterator の別名 |
C++11 |
非メンバ関数
注:非メンバ関数版の swap
は sub_match
用にオーバーロードされていないため、pair
から継承したメンバ関数 swap
は呼び出さずに汎用版の動作となる(一時変数を利用したムーブでオブジェクトの内容を交換する)。従って、こちらはメンバ変数 matched
も交換される。
非メンバ型
名前 |
説明 |
対応バージョン |
csub_match |
sub_match<const char*> の別名 |
C++11 |
wcsub_match |
sub_match<const wchar_t*> の別名 |
C++11 |
ssub_match |
sub_match<string::const_iterator> の別名 |
C++11 |
wssub_match |
sub_match<wstring::const_iterator> の別名 |
C++11 |
例
出力
0:range = [1, 5), length() = 4, str() = 'abc '
1:not participate
2:range = [1, 4), length() = 3, str() = 'abc'
バージョン
言語
処理系
- Clang: 3.0 ✅, 3.1 ✅, 3.2 ✅, 3.3 ✅, 3.4 ✅, 3.5 ✅, 3.6 ✅
- GCC: 4.9.0 ✅, 4.9.1 ✅, 5.0.0 ✅
- ICC: ??
- Visual C++: ??