match_results 類別
保留子相符項目的序列。
語法
template <class BidIt, class Alloc>
class match_results
參數
BidIt
子相符項目的迭代器類型。
Alloc
管理儲存體的配置器類型。
備註
類別範本描述物件,該物件會控制正則表示式搜尋所產生之型 sub_match<BidIt>
別的不可修改專案序列。 每個項目會指向符合對應至該項目之擷取群組的子序列。
建構函式
建構函式 | 描述 |
---|---|
match_results | 建構物件。 |
Typedefs
類型名稱 | 描述 |
---|---|
allocator_type | 管理儲存體的配置器類型。 |
char_type | 元素的類型。 |
const_iterator | 子相符項目的 const 迭代器類型。 |
const_reference | 元素 const 參考的類型。 |
difference_type | 迭代器差值的類型。 |
iterator | 子相符項目的迭代器類型。 |
reference | 元素參考的類型。 |
size_type | 子相符項目計數的類型。 |
string_type | 字串的類型。 |
value_type | 子對應的類型。 |
成員函式
成員函數 | 描述 |
---|---|
begin | 指定子相符項目序列的開頭。 |
empty | 測試是否沒有任何子相符項目。 |
end | 指定子相符項目序列的結尾。 |
format | 格式子相符項目。 |
get_allocator | 傳回已儲存的配置器。 |
length | 傳回子相符項目的長度。 |
max_size | 取得最大子相符項目數。 |
position | 取得子群組的起始位移。 |
prefix | 取得第一個子相符項目之前的序列。 |
size | 計算子相符項目數。 |
str | 傳回子相符項目。 |
尾碼 | 取得最後一個子相符項目之後的序列。 |
swap | 交換兩個 match_results 物件。 |
操作員
運算子 | 描述 |
---|---|
operator= | 複製 match_results 物件。 |
operator[] | 存取子物件。 |
需求
Header:<regex>
命名空間:std
範例
// std__regex__match_results.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::cout << "prefix: matched == " << std::boolalpha
<< mr.prefix().matched
<< ", value == " << mr.prefix() << std::endl;
std::cout << "whole match: " << mr.length() << " chars, value == "
<< mr.str() << std::endl;
std::cout << "suffix: matched == " << std::boolalpha
<< mr.suffix().matched
<< ", value == " << mr.suffix() << std::endl;
std::cout << std::endl;
std::string fmt("\"c(a*)|(b)\" matched \"$&\"\n"
"\"(a*)\" matched \"$1\"\n"
"\"(b)\" matched \"$2\"\n");
std::cout << mr.format(fmt) << std::endl;
std::cout << std::endl;
// index through submatches
for (size_t n = 0; n < mr.size(); ++n)
{
std::cout << "submatch[" << n << "]: matched == " << std::boolalpha
<< mr[n].matched <<
" at position " << mr.position(n) << std::endl;
std::cout << " " << mr.length(n)
<< " chars, value == " << mr[n] << std::endl;
}
std::cout << std::endl;
// iterate through submatches
for (std::cmatch::iterator it = mr.begin(); it != mr.end(); ++it)
{
std::cout << "next submatch: matched == " << std::boolalpha
<< it->matched << std::endl;
std::cout << " " << it->length()
<< " chars, value == " << *it << std::endl;
}
std::cout << std::endl;
// other members
std::cout << "empty == " << std::boolalpha << mr.empty() << std::endl;
std::cmatch::allocator_type al = mr.get_allocator();
std::cmatch::string_type str = std::string("x");
std::cmatch::size_type maxsiz = mr.max_size();
std::cmatch::char_type ch = 'x';
std::cmatch::difference_type dif = mr.begin() - mr.end();
std::cmatch::const_iterator cit = mr.begin();
std::cmatch::value_type val = *cit;
std::cmatch::const_reference cref = val;
std::cmatch::reference ref = val;
maxsiz = maxsiz; // to quiet "unused" warnings
if (ref == cref)
ch = ch;
dif = dif;
return (0);
}
prefix: matched == true, value == x
whole match: 4 chars, value == caaa
suffix: matched == true, value == y
"c(a*)|(b)" matched "caaa"
"(a*)" matched "aaa"
"(b)" matched ""
submatch[0]: matched == true at position 1
4 chars, value == caaa
submatch[1]: matched == true at position 2
3 chars, value == aaa
submatch[2]: matched == false at position 6
0 chars, value ==
next submatch: matched == true
4 chars, value == caaa
next submatch: matched == true
3 chars, value == aaa
next submatch: matched == false
0 chars, value ==
empty == false
match_results::allocator_type
管理儲存體的配置器類型。
typedef Alloc allocator_type;
備註
typedef 是樣板自變數 Alloc 的同義字。
match_results::begin
指定子相符項目序列的開頭。
const_iterator begin() const;
備註
成員函式傳回的隨機存取迭代器,指向序列的第一個項目 (或空序列結尾以外的位置)。
match_results::char_type
元素的類型。
typedef typename iterator_traits<BidIt>::value_type char_type;
備註
這個 typedef 與 iterator_traits<BidIt>::value_type
類型同義,後者是搜尋到之字元序列的項目類型。
match_results::const_iterator
子相符項目的 const 迭代器類型。
typedef T0 const_iterator;
備註
此 typedef 所描述的物件可做為受控制序列的常數隨機存取迭代器。
match_results::const_reference
元素 const 參考的類型。
typedef const typename Alloc::const_reference const_reference;
備註
typedef 所說明的物件可作為受控制序列之元素的常數參考。
match_results::d ifference_type
迭代器差值的類型。
typedef typename iterator_traits<BidIt>::difference_type difference_type;
備註
Typedef 是 iterator_traits<BidIt>::difference_type
類型的同義字;它描述一個物件,可以代表指向受控制序列中項目之任何兩個迭代器間的差值。
match_results::empty
測試是否沒有任何子相符項目。
bool empty() const;
備註
只有在規則運算式搜尋失敗時,此成員函式才會傳回 true。
match_results::end
指定子相符項目序列的結尾。
const_iterator end() const;
備註
成員函式會傳回指向序列結尾之外的迭代器。
match_results::format
格式子相符項目。
template <class OutIt>
OutIt format(OutIt out,
const string_type& fmt, match_flag_type flags = format_default) const;
string_type format(const string_type& fmt, match_flag_type flags = format_default) const;
參數
OutIt
輸出迭代器類型。
out
要寫入的輸出資料流。
fmt
格式字串。
flags
格式旗標。
備註
每個成員函式都會在格式 fmt 的控件下產生格式化文字。 第一個成員函式會將格式化的文字寫入其自變數所定義的序列,並傳回。第二個成員函式會傳回保存格式化文字複本的字串物件。
若要產生格式化文字, 格式字串中的常值文字通常會複製到目標序列。 格式字串中的每個逸出序列由所代表的文字取代。 複製和取代的詳細資料受到傳遞至函式的格式旗標控制。
match_results::get_allocator
傳回已儲存的配置器。
allocator_type get_allocator() const;
備註
成員函式會傳回 *this
用來配置其 sub_match
的配置器物件複本。
match_results::iterator
子相符項目的迭代器類型。
typedef const_iterator iterator;
備註
此類型說明可作為受控制序列之隨機存取迭代器的物件。
match_results::length
傳回子相符項目的長度。
difference_type length(size_type sub = 0) const;
參數
sub
子相符項目的索引。
備註
此成員函式會傳回 (*this)[sub].length()
。
match_results::match_results
建構物件。
explicit match_results(const Alloc& alloc = Alloc());
match_results(const match_results& right);
參數
alloc
要儲存的配置器物件。
right
要複製的 match_results 物件。
備註
第一個建構函式會建構不含子相符項目的 match_results
物件。 第二個match_results
建構函式會建構右邊複本的物件。
match_results::max_size
取得最大子相符項目數。
size_type max_size() const;
備註
此成員函式會傳回物件可以控制之最長序列的長度。
match_results::operator=
複製 match_results 物件。
match_results& operator=(const match_results& right);
參數
right
要複製的 match_results 物件。
備註
成員運算子會將 所控制的序列取代為由 right 所控制*this
之序列的複本。
match_results::operator[]
存取子物件。
const_reference operator[](size_type n) const;
參數
n
子相符項目的索引。
備註
如果擷取群組 n 不屬於相符專案,則成員函式會傳回控件序列 n 元素的參考,或傳回空sub_match
對象的size() <= n
參考。
match_results::p osition
取得子群組的起始位移。
difference_type position(size_type sub = 0) const;
參數
sub
子相符項目的索引。
備註
此成員函式會傳回 std::distance(prefix().first, (*this)[sub].first)
,也就是從目標序列中的第一個字元,到受控制序列的 n
項目所指向的子相符項目中第一個字元之間的距離。
match_results::p refix
取得第一個子相符項目之前的序列。
const_reference prefix() const;
備註
此成員函式會傳回 sub_match<BidIt>
類型物件的參考,以指向起始於目標序列開頭並結束於 (*this)[0].first
的字元序列,也就是指向相符子序列之前的文字。
match_results::reference
元素參考的類型。
typedef const_reference reference;
備註
這個類型與類型 const_reference
同義。
match_results::size
計算子相符項目數。
size_type size() const;
備註
如果用於搜尋的數目超過規則運算式中的擷取群組數目,此成員函式會傳回 1;如果不進行搜尋,則會傳回 0。
match_results::size_type
子相符項目計數的類型。
typedef typename Alloc::size_type size_type;
備註
這個類型與類型 Alloc::size_type
同義。
match_results::str
傳回子相符項目。
string_type str(size_type sub = 0) const;
參數
sub
子相符項目的索引。
備註
此成員函式會傳回 string_type((*this)[sub])
。
match_results::string_type
字串的類型。
typedef basic_string<char_type> string_type;
備註
這個類型與類型 basic_string<char_type>
同義。
match_results::後綴
取得最後一個子相符項目之後的序列。
const_reference suffix() const;
備註
此成員函式會傳回 sub_match<BidIt>
類型物件的參考,以指向起始於 (*this)[size() - 1].second
並結束於目標序列結尾的字元序列,也就是指向相符子序列之後的文字。
match_results::swap
交換兩個 match_results 物件。
void swap(const match_results& right) throw();
參數
right
要交換的 match_results 物件。
備註
成員函式會以固定時間交換 和 的內容*this
,而且不會擲回例外狀況。
match_results::value_type
子對應的類型。
typedef sub_match<BidIt> value_type;
備註
typedef 與類型 sub_match<BidIt>
同義。