std::regex_traits<CharT>:: lookup_collatename
|
template
<
class
ForwardIt
>
string_type lookup_collatename ( ForwardIt first, ForwardIt last ) const ; |
||
如果字符序列
[
first
,
last
)
表示当前嵌入区域设置中有效的对照元素名称,则返回该对照元素的名称。否则返回空字符串。
排序元素是POSIX正则表达式中位于
[.
和
.]
之间的符号。例如,
[.a.]
在C区域设置中匹配字符
a
,
[.tilde.]
同样在C区域设置中匹配字符
~
。而
[.ch.]
在捷克语区域设置中匹配二合字母
ch
,但在大多数其他区域设置中会抛出
std::regex_error
异常,其错误代码为
std::regex_constants::error_collate
。
参数
| 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) << "\") 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