共用方式為


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>同義。

另請參閱

<regex>