名前空間
変種
操作

std::regex_traits::lookup_collatename

提供: cppreference.com
< cpp‎ | regex‎ | regex traits
template< class ForwardIt >
string_type lookup_collatename( ForwardIt first, ForwardIt last ) const;

文字シーケンス [first, last) が現在設定されているロケールにおいて有効な照合要素の名前を表す場合、その照合要素を返します。 そうでなければ、空文字列を返します。

照合要素は POSIX の正規表現における [..] の間のシンボルです。 例えば [.a.] は C ロケールにおいて文字 a にマッチします。 同様に [.tilde.] は C ロケールにおいて文字 ~ にマッチします。 [.ch.] はチェコ語ロケールにおいては二重音字 ch にマッチしますが、他のほとんどのロケールではエラーコード std::regex_constants::error_collate を持つ std::regex_error を生成します。

[編集] 引数

first, last - 照合要素名を表す文字シーケンスを表す一組のイテレータ
型の要件
-
ForwardItForwardIterator の要件を満たさなければなりません。

[編集] 戻り値

名前付き照合要素の文字列表現。

[編集]

#include <iostream>
#include <string>
#include <regex>
 
struct noisy_traits : std::regex_traits<char> {
 
    template< class Iter >
    string_type lookup_collatename( Iter first, Iter last ) const {
        string_type result = regex_traits::lookup_collatename(first, last);
        std::cout << "regex_traits<>::lookup_collatename(\""
                  << string_type(first, last)
                  << "\") returns \"" << result << "\"\n";
        return result;
    }
};
 
int main()
{
    std::string str = "z|}a"; // C locale collation order: x,y,z,{,|,},~
    std::basic_regex<char, noisy_traits> re("[x-[.tilde.]]*a", std::regex::basic);
    std::cout << std::boolalpha << std::regex_match(str, re) << '\n';
}

出力:

regex_traits<>::lookup_collatename("tilde") returns "~"
true