std::regex_traits<CharT>::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 | - | 照合要素名を表す文字シーケンスを表す一組のイテレータ |
型の要件 | ||
-ForwardIt は LegacyForwardIterator の要件を満たさなければなりません。 |
[編集]戻り値
名前付き照合要素の文字列表現。
[編集]例
Run this code
#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