regex_traits クラス
照合する要素の特性を記述します。
構文
template<class Elem>
class regex_traits
パラメーター
Elem
記述する文字要素の型。
解説
このクラス テンプレートは、Elem 型のさまざまな正規表現の特徴 (traits) を表します。 クラス テンプレート basic_regex クラスでは、この情報を使用して、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 | 要素を数値に変換します。 |
要件
ヘッダー: <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)
で指定された 2 つの文字シーケンスでは、反復子の範囲 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)
で指定された 2 つの文字シーケンスでは、反復子の範囲 transform_primary(first1, last1) < transform_primary(first2, last2)
で指定された文字シーケンスが、ケースやアクセントに関係なく、反復子の範囲 [first1, last1)
で指定された文字シーケンスより前に来る場合は、 [first2, last2)
です。
regex_traits::translate
一致する同等の要素に変換します。
char_type translate(char_type ch) const;
パラメーター
ch
変換する要素。
解説
このメンバー関数は、格納されている locale
オブジェクトによって異なる変換規則を使用して生成された文字を返します。 2 つの char_type
オブジェクト ch1
と ch2
があるとします。一方が正規表現の定義に出現し、もう一方がターゲット シーケンス内の対応する位置に出現した場合にロケールを区別して比較して translate(ch1) == translate(ch2)
と ch1
が一致するときのみ、 ch2
になります。
regex_traits::translate_nocase
一致する同等のケースレス要素に変換します。
char_type translate_nocase(char_type ch) const;
パラメーター
ch
変換する要素。
解説
このメンバー関数は、格納されている locale
オブジェクトによって異なる変換規則を使用して生成された文字を返します。 2 つの char_type
オブジェクト ch1
と ch2
では、 translate_nocase(ch1) == translate_nocase(ch2)
と ch1
のいずれか一方が正規表現の定義で出現し、もう一方がターゲット シーケンス内の対応する位置に出現し、大文字と小文字を区別せずに比較して両者が一致する場合に限り、 ch2
になります。
regex_traits::value
要素を数値に変換します。
int value(Elem ch, int radix) const;
パラメーター
ch
変換する要素。
radix
使用する算術的な基数。
解説
このメンバー関数は、基数 radix の文字 ch で表現される値を返します。ch が基数 radix の有効な数値でない場合は -1 を返します。 この関数は、8、10、または 16 の radix 引数だけで呼び出されます。
関連項目
<regex>
regex_constants クラス
regex_error クラス
<regex> 関数
regex_iterator クラス
<regex> 演算子
regex_token_iterator クラス
<regex> typedefs
regex_traits<char> クラス
regex_traits<wchar_t> クラス