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
物件 ch1
和 ch2
,唯有 translate(ch1) == translate(ch2)
和 ch1
符合這個情況:一個發生在規則運算式定義,另一個發生在區分地區設定相符項目之目標序列的對應位置時,才會是 ch2
。
regex_traits::translate_nocase
轉換成相等且不區分大小寫的相符項目。
char_type translate_nocase(char_type ch) const;
參數
ch
要轉換的項目。
備註
使用取決於預存 locale
物件的轉換規則,成員函式會傳回它產生的字元。 至於兩個 char_type
物件 ch1
和 ch2
,唯有 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類別