共用方式為


regex_traits 類別

描述進行比對的元素特性。

語法

template<class Elem>
class regex_traits

參數

Elem
要描述的字元項目類型。

備註

類別範本描述 Elem 類型的各種正則表示式特性。 類別範本basic_regex Class 會使用此資訊來操作 Elem 類型的元素。

每個 regex_traits 物件都擁有一個類型 regex_traits::locale 的物件,這種類型可為其部分成員函式使用。 預設的地區設定是 regex_traits::locale()的複本。 成員函式 imbue 取代了地區設定物件,而成員函式 getloc 會傳回地區設定物件的複本。

建構函式

建構函式 描述
regex_traits 建構物件。

Typedefs

類型名稱 描述
char_class_type 字元類別指示項的類型。
char_type 元素的類型。
locale_type 儲存的地區設定物件類型。
size_type 序列長度的類型。
string_type 元素字串的類型。

成員函式

成員函數 描述
getloc 傳回儲存的地區設定物件。
imbue 修改儲存的地區設定物件。
isctype 測試是否有類別成員資格。
length 傳回 Null 終止序列的長度。
lookup_classname 將序列對應至字元類別。
lookup_collatename 將序列對應至定序項目。
transform 轉換成相等的已排序序列。
transform_primary 轉換成相等且不區分大小寫的已排序序列。
translate 轉換成相等的相符元素。
translate_nocase 轉換成相等且不區分大小寫的相符項目。
value 將項目轉換成數值。

需求

Header:<regex>

命名空間:std

範例

// std__regex__regex_traits.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>

typedef std::regex_traits<char> Mytr;
int main()
    {
    Mytr tr;

    Mytr::char_type ch = tr.translate('a');
    std::cout << "translate('a') == 'a' == " << std::boolalpha
        << (ch == 'a') << std::endl;

    std::cout << "nocase 'a' == 'A' == " << std::boolalpha
        << (tr.translate_nocase('a') == tr.translate_nocase('A'))
        << std::endl;

    const char *lbegin = "abc";
    const char *lend = lbegin + strlen(lbegin);
    Mytr::size_type size = tr.length(lbegin);
    std::cout << "length(\"abc\") == " << size <<std::endl;

    Mytr::string_type str = tr.transform(lbegin, lend);
    std::cout << "transform(\"abc\") < \"abc\" == " << std::boolalpha
        << (str < "abc") << std::endl;

    const char *ubegin = "ABC";
    const char *uend = ubegin + strlen(ubegin);
    std::cout << "primary \"ABC\" < \"abc\" == " << std::boolalpha
        << (tr.transform_primary(ubegin, uend) <
            tr.transform_primary(lbegin, lend))
        << std::endl;

    const char *dig = "digit";
    Mytr::char_class_type cl = tr.lookup_classname(dig, dig + 5);
    std::cout << "class digit == d == " << std::boolalpha
        << (cl == tr.lookup_classname(dig, dig + 1))
        << std::endl;

    std::cout << "'3' is digit == " <<std::boolalpha
        << tr.isctype('3', tr.lookup_classname(dig, dig + 5))
        << std::endl;

    std::cout << "hex C == " << tr.value('C', 16) << std::endl;

// other members
    str = tr.lookup_collatename(dig, dig + 5);

    Mytr::locale_type loc = tr.getloc();
    tr.imbue(loc);

    return (0);
    }
translate('a') == 'a' == true
nocase 'a' == 'A' == true
length("abc") == 3
transform("abc") < "abc" == false
primary "ABC" < "abc" == false
class digit == d == true
'3' is digit == true
hex C == 12

regex_traits::char_class_type

字元類別指示項的類型。

typedef T8 char_class_type;

備註

此類型是指定字元類別之未指定類型的同義字。 這個類型的值可以透過 | 運算子來結合,以指定做為運算元所指定之類別聯集的字元類別。

regex_traits::char_type

元素的類型。

typedef Elem char_type;

備註

typedef 是範本引數 Elem的同義字。

regex_traits::getloc

傳回儲存的地區設定物件。

locale_type getloc() const;

備註

成員函式會傳回儲存的 locale 物件。

regex_traits::imbue

修改儲存的地區設定物件。

locale_type imbue(locale_type loc);

參數

loc
要儲存的地區設定物件。

備註

成員函式會將 loc 複製到預存 locale 物件,並傳回預存 locale 物件先前值的複本。

regex_traits::isctype

測試是否有類別成員資格。

bool isctype(char_type ch, char_class_type cls) const;

參數

ch
待測試的項目。

cls
做為測試對象的類別。

備註

只有當字元 ch 位於 cls指定的字元類別中時,成員函式才會傳回 true。

regex_traits::length

傳回 Null 終止序列的長度。

static size_type length(const char_type *str);

參數

str
以 Null 結束的序列。

備註

此靜態成員函式傳回 std::char_traits<char_type>::length(str)

regex_traits::locale_type

儲存的地區設定物件類型。

typedef T7 locale_type;

備註

Typedef 是封裝地區設定之類型的同義字。 在特製化 regex_traits<char>regex_traits<wchar_t> 時,此為 std::locale的同義字。

regex_traits::lookup_classname

將序列對應至字元類別。

template <class FwdIt>
char_class_type lookup_classname(FwdIt first, FwdIt last) const;

參數

first
要查閱之序列的開頭。

last
要查閱之序列的結尾。

備註

成員函式會傳回一個值,指定由字元序列命名、依引數指向的字元類別。 此值不依存於序列中字元的大小寫。

特製化 regex_traits<char> 會辨識名稱 "d""s""w""alnum""alpha""blank""cntrl""digit""graph""lower""print""punct""space""upper""xdigit",且完全不考量大小寫。

特製化 regex_traits<wchar_t> 會辨識名稱 L"d"L"s"L"w"L"alnum"L"alpha"L"blank"L"cntrl"L"digit"L"graph"L"lower"L"print"L"punct"L"space"L"upper"L"xdigit",且完全不考量大小寫。

regex_traits::lookup_collatename

將序列對應至定序項目。

template <class FwdIt>
string_type lookup_collatename(FwdIt first, FwdIt last) const;

參數

first
要查閱之序列的開頭。

last
要查閱之序列的結尾。

備註

此成員函式會傳回含有對應至序列 [first, last)之定序項目的字串物件;如果序列不是有效的定序項目,則傳回空字串。

regex_traits::regex_traits

建構物件。

regex_traits();

備註

建構函式會建構已儲存的 locale 物件初始化為預設地區設定的物件。

regex_traits::size_type

序列長度的類型。

typedef T6 size_type;

備註

此 typedef 是不帶正負號之整數類型的同義字。 在特製化 regex_traits<char>regex_traits<wchar_t> 時,此為 std::size_t的同義字。

此 typedef 是 std::size_t的同義字。

regex_traits::string_type

元素字串的類型。

typedef basic_string<Elem> string_type;

備註

此 typedef 是 basic_string<Elem>的同義字。

regex_traits::transform

轉換成相等的已排序序列。

template <class FwdIt>
string_type transform(FwdIt first, FwdIt last) const;

參數

first
要轉換之序列的開頭。

last
要轉換之序列的結尾。

備註

此成員函式會傳回根據儲存的 locale 物件,使用轉換規則所產生的字串。 至於迭代器範圍 [first1, last1)[first2, last2)所指定的兩個字元序列,如果迭代器範圍 transform(first1, last1) < transform(first2, last2) 所指定的字元序列排在迭代器範圍 [first1, last1) 所指定的字元序列前面,則 [first2, last2)

regex_traits::transform_primary

轉換成相等且不區分大小寫的已排序序列。

template <class FwdIt>
string_type transform_primary(FwdIt first, FwdIt last) const;

參數

first
要轉換之序列的開頭。

last
要轉換之序列的結尾。

備註

此成員函式會傳回根據儲存的 locale 物件,使用轉換規則所產生的字串。 至於迭代器範圍 [first1, last1)[first2, last2)所指定的兩個字元序列,如果迭代器範圍 transform_primary(first1, last1) < transform_primary(first2, last2) 所指定的字元序列排在迭代器範圍 [first1, last1) 所指定的字元序列前面,則 [first2, last2) ,而不必考慮大小寫或腔調字。

regex_traits::translate

轉換成相等的相符元素。

char_type translate(char_type ch) const;

參數

ch
要轉換的項目。

備註

使用取決於預存 locale 物件的轉換規則,成員函式會傳回它產生的字元。 至於兩個 char_type 物件 ch1ch2,唯有 translate(ch1) == translate(ch2)ch1 符合這個情況:一個發生在規則運算式定義,另一個發生在區分地區設定相符項目之目標序列的對應位置時,才會是 ch2

regex_traits::translate_nocase

轉換成相等且不區分大小寫的相符項目。

char_type translate_nocase(char_type ch) const;

參數

ch
要轉換的項目。

備註

使用取決於預存 locale 物件的轉換規則,成員函式會傳回它產生的字元。 至於兩個 char_type 物件 ch1ch2,唯有 translate_nocase(ch1) == translate_nocase(ch2)ch1 符合這個情況:一個發生在規則運算式定義,另一個發生在區分大小寫相符項目之目標序列的對應位置時,才會是 ch2

regex_traits::value

將項目轉換成數值。

int value(Elem ch, int radix) const;

參數

ch
要轉換的項目。

基數
要使用的算術基底。

備註

成員函式會傳回基底基底中字元 ch 所代表的值,如果 ch 不是基底基底基數的有效位數,則傳回 -1。 函式只會使用 8、10 或 16 的基數 自變數來呼叫。

另請參閱

<regex>
regex_constants 類別
regex_error 類別
<regex> 函式
regex_iterator 類別
<regex> 運算符
regex_token_iterator 類別
<regex> typedefs
<regex_traits char> 類別
<> regex_traits wchar_t類別