Localization library | |||||||||||||||||||||||||
Regular expressions library(C++11) | |||||||||||||||||||||||||
Formatting library(C++20) | |||||||||||||||||||||||||
Null-terminated sequence utilities | |||||||||||||||||||||||||
Byte strings | |||||||||||||||||||||||||
Multibyte strings | |||||||||||||||||||||||||
Wide strings | |||||||||||||||||||||||||
Primitive numeric conversions | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Text encoding identifications | |||||||||||||||||||||||||
|
|
Defined in header <locale> | ||
template<class CharT> class collate; | ||
Classstd::collate
encapsulates locale-specific collation (comparison) and hashing of strings. This facet is used bystd::basic_regex and can be applied, by means ofstd::locale::operator(), directly to all standard algorithms that expect a string comparison predicate.
Inheritance diagram
Contents |
The standard library is guaranteed to provide the following specializations (they arerequired 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 |
Type | Definition |
char_type | CharT |
string_type | std::basic_string<CharT> |
Member | Description |
std::locale::idid [static] | the identifier of thefacet |
constructs a newcollate facet(public member function) | |
destructs acollate facet(protected member function) | |
invokesdo_compare (public member function)[edit] | |
invokesdo_transform (public member function)[edit] | |
invokesdo_hash (public member function)[edit] |
[virtual] | compares two strings using this facet's collation rules (virtual protected member function)[edit] |
[virtual] | transforms a string so that collation can be replaced by comparison (virtual protected member function)[edit] |
[virtual] | generates an integer hash value using this facet's collation rules (virtual protected member function)[edit] |
#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 ögruppEnglish locale collation order: ängel ar år förnamn ögrupp zebra ZebraSwedish locale collation order: ar förnamn zebra Zebra år ängel ögrupp
lexicographically compares two strings using this locale's collate facet (public member function of std::locale )[edit] | |
represents the system-suppliedstd::collate for the named locale (class template)[edit] |