std::regex_traits<CharT>::lookup_collatename
template< class ForwardIt > string_type lookup_collatename( ForwardIt first, ForwardIt last ) const; |
Если последовательность символов [first, last) представляет имя допустимого элемента сортировки в текущем локализованном окружении, возвращает имя этого элемента сортировки. В противном случае возвращает пустую строку.
Элементы сортировки — это символы, встречающиеся в регулярных выражениях POSIX между [. и .]. Например, [.a.] соответствует символу a в локали C. [.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 locale collation order: 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
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/regex/regex_traits/lookup_collatename