std::collate
Определено в заголовке <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> |
Члены-функции
создаёт новый фасет collate (публичная функция-член) |
|
уничтожает фасет collate (защищённая функция-член) |
|
вызывает do_compare (публичная функция-член) |
|
вызывает do_transform (публичная функция-член) |
|
вызывает do_hash (публичная функция-член) |
Члены-объекты
| static std::locale::id id |
id локали (публичный член-объект) |
Защищённые функции-члены
|
[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) |
|
| представляет системно-предоставленный фасет сортировки для указанной локали (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/locale/collate