std:: collate
From cppreference.com
Defined in header
<locale>
|
||
template
<
class
CharT
>
class collate ; |
||
Class
std::collate
encapsulates locale-specific collation (comparison) and hashing of strings. This facet is used by
std::basic_regex
and can be applied, by means of
std::locale::operator()
, directly to all standard algorithms that expect a string comparison predicate.
Inheritance diagram
Specializations
The standard library is guaranteed to provide the following specializations (they are required to be implemented by any locale object ):
Defined in header
<locale>
|
|
std :: collate < char > | implements lexicographical ordering of byte strings |
std :: collate < wchar_t > | implements lexicographical ordering of wide strings |
Nested types
Type | Definition |
char_type
|
CharT
|
string_type
|
std:: basic_string < CharT > |
Data members
Member | Description |
std::locale::id
id
[static]
|
the identifier of the facet |
Member functions
constructs a new
collate
facet
(public member function) |
|
destructs a
collate
facet
(protected member function) |
|
invokes
do_compare
(public member function) |
|
invokes
do_transform
(public member function) |
|
invokes
do_hash
(public member function) |
Protected member functions
[virtual]
|
compares two strings using this facet's collation rules
(virtual protected member function) |
[virtual]
|
transforms a string so that collation can be replaced by comparison
(virtual protected member function) |
[virtual]
|
generates an integer hash value using this facet's collation rules
(virtual protected member function) |
Example
Run this code
#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'; }
Output:
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
See also
lexicographically compares two strings using this locale's collate facet
(public member function of
std::locale
)
|
|
represents the system-supplied
std::collate
for the named locale
(class template) |