次の方法で共有


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
テストするクラス。

解説

メンバー関数は、文字 chcls で指定された文字クラスにある場合にのみ、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 オブジェクト ch1ch2があるとします。一方が正規表現の定義に出現し、もう一方がターゲット シーケンス内の対応する位置に出現した場合にロケールを区別して比較して translate(ch1) == translate(ch2)ch1 が一致するときのみ、 ch2 になります。

regex_traits::translate_nocase

一致する同等のケースレス要素に変換します。

char_type translate_nocase(char_type ch) const;

パラメーター

ch
変換する要素。

解説

このメンバー関数は、格納されている locale オブジェクトによって異なる変換規則を使用して生成された文字を返します。 2 つの char_type オブジェクト ch1ch2では、 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> クラス