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) 。
|
返回值
被指名校排元素作为字符串的表示。
示例
运行此代码
#include <iostream> #include <regex> #include <string> 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) << "\") 返回 \"" << 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") 返回 "~" true