# 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