std::regex_traits<CharT>::lookup_collatename
< cpp | regex | regex traits
template< class ForwardIt > string_type lookup_collatename( ForwardIt first, ForwardIt last ) const; |
||
若字符序列 [first, last)
表示当前感染的 locale 中合法对照元素的名称,则返回该对照元素之名。否则,返回空字符串。
对照元素是在 POSIX 正则表达式的 [.
与 .]
之间找到的符号。例如, [.a.]
在 C 本地环境中匹配字符 a
。而 [.tilde.]
在 C 本地环境中匹配 ~
。 [.ch.]
在捷克语本地环境中匹配双标符 ch
,但在大多数其他本地环境中生成错误码为 std::regex_constants::error_collate 的 std::regex_error 。
参数
first, last | - | 一对迭代器,确定表示对照元素名的字符序列 |
类型要求 | ||
-ForwardIt 必须满足遗留向前迭代器 (LegacyForwardIterator) 的要求。
|
返回值
具名对照元素作为字符串的表示。
示例
运行此代码
#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 本地环境对照顺序: 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