std:: collate
From cppreference.net
|
Определено в заголовочном файле
<locale>
|
||
|
template
<
class
CharT
>
class collate ; |
||
Класс
std::collate
инкапсулирует зависящие от локали правила сравнения и хеширования строк. Этот аспект используется
std::basic_regex
и может быть применен, посредством
std::locale::operator()
, непосредственно ко всем стандартным алгоритмам, которые ожидают предикат сравнения строк.
Диаграмма наследования
Содержание |
Специализации
Стандартная библиотека гарантированно предоставляет следующие специализации (они должны быть реализованы любым объектом локали ):
|
Определено в заголовке
<locale>
|
|
| std :: collate < char > | реализует лексикографическое упорядочивание байтовых строк |
| std :: collate < wchar_t > | реализует лексикографическое упорядочивание широких строк |
Вложенные типы
| Тип | Определение |
char_type
|
CharT
|
string_type
|
std:: basic_string < CharT > |
Члены данных
| Участник | Описание |
std::locale::id
id
[static]
|
идентификатор аспекта |
Функции-члены
создает новый
collate
аспект
(публичная функция-член) |
|
уничтожает
collate
аспект
(защищенная функция-член) |
|
вызывает
do_compare
(публичная функция-член) |
|
вызывает
do_transform
(публичная функция-член) |
|
вызывает
do_hash
(публичная функция-член) |
Защищенные функции-члены
|
[virtual]
|
сравнивает две строки, используя правила сортировки этого аспекта
(виртуальная защищенная функция-член) |
|
[virtual]
|
преобразует строку так, чтобы сортировка могла быть заменена сравнением
(виртуальная защищенная функция-член) |
|
[virtual]
|
генерирует целочисленное хэш-значение, используя правила сортировки этого аспекта
(виртуальная защищенная функция-член) |
Пример
Запустить этот код
#include <algorithm> #include <iostream> #include <locale> #include <string> #include <vector> int main() { std::locale::global(std::locale("en_US.utf8")); std::wcout.imbue(std::locale("")); std::vector<std::wstring> v { L"ar", L"zebra", L"\u00f6grupp", L"Zebra", L"\u00e4ngel",L"\u00e5r", L"f\u00f6rnamn" }; std::wcout << "Default locale collation order: "; std::sort(v.begin(), v.end()); for (auto s : v) std::wcout << s << ' '; std::wcout << '\n'; std::wcout << "English locale collation order: "; std::sort(v.begin(), v.end(), std::locale("en_US.UTF-8")); for (auto s : v) std::wcout << s << ' '; std::wcout << '\n'; std::wcout << "Swedish locale collation order: "; std::sort(v.begin(), v.end(), std::locale("sv_SE.UTF-8")); for (auto s : v) std::wcout << s << ' '; std::wcout << '\n'; }
Вывод:
Default locale collation order: Zebra ar förnamn zebra ängel år ögrupp English locale collation order: ängel ar år förnamn ögrupp zebra Zebra Swedish locale collation order: ar förnamn zebra Zebra år ängel ögrupp
Смотрите также
|
лексикографически сравнивает две строки, используя фасет сравнения данной локали
(публичная функция-член
std::locale
)
|
|
|
представляет предоставляемый системой
std::collate
для именованной локали
(шаблон класса) |