Namespaces
Variants

std::regex_traits<CharT>:: lookup_collatename

From cppreference.net
Regular expressions library
Classes
(C++11)
Algorithms
Iterators
Exceptions
Traits
Constants
(C++11)
Regex Grammar
template < class ForwardIt >
string_type lookup_collatename ( ForwardIt first, ForwardIt last ) const ;

문자 시퀀스 [ first , last ) 가 현재 임뷰드된 로캘에서 유효한 콜레이팅 엘리먼트의 이름을 나타내는 경우, 해당 콜레이팅 엘리먼트의 이름을 반환합니다. 그렇지 않으면 빈 문자열을 반환합니다.

콜레이팅 요소(Collating elements)는 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