std::collate
Von cppreference.com
| Definiert in Header <locale> |
||
| template< class CharT > class collate; |
||
Die Klasse std::collate kapselt gebietsschemabezogenes Sortieren (Vergleichen) und Hashing von Zeichenketten. Diese Facette wird von std::basic_regex verwendet und kann mittels std::locale::operator() direkt auf alle Standardalgorithmen angewendet werden, die ein Prädikat zum Vergleichen von Zeichenketten erwarten.
Vererbungdiagramm
Inhalt |
[bearbeiten] Spezialisierungen
Die Standardbibliothek garantiert die Bereitstellung der folgenden Spezialisierungen (sie müssen von jedem Locale-Objekt implementiert werden)
| Definiert in Header
<locale> | |
| std::collate<char> | implementiert lexikographische Ordnung von Byte-Zeichenketten |
| std::collate<wchar_t> | implementiert lexikographische Ordnung von Wide-Zeichenketten |
[bearbeiten] Verschachtelte Typen
| Typ | Definition |
char_type
|
CharT
|
string_type
|
std::basic_string<CharT> |
[edit] Datenmember
| Mitglied | Beschreibung |
std::locale::id id [static] |
die Kennung des Facets |
[bearbeiten] Member-Funktionen
konstruiert ein neues collate-Facet(öffentliche Memberfunktion) | |
destruiert ein collate-Facet(geschützte Memberfunktion) | |
ruft do_compare auf(public member function) | |
ruft do_transform auf(public member function) | |
ruft do_hash auf(public member function) |
[bearbeiten] Protected Member-Funktionen
| [virtuell] |
vergleicht zwei Zeichenketten anhand der Sortierregeln dieses Facets (virtual protected member function) |
| [virtuell] |
transformiert eine Zeichenkette, damit die Sortierung durch einen Vergleich ersetzt werden kann (virtual protected member function) |
| [virtuell] |
erzeugt einen ganzzahligen Hash-Wert anhand der Sortierregeln dieses Facets (virtual protected member function) |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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'; }
Ausgabe
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
[bearbeiten] Siehe auch
| Vergleicht lexikografisch zwei Zeichenketten mit der collate-Facet dieses Locales. (public member function of std::locale) | |
| repräsentiert das systemseitig bereitgestellte std::collate für das benannte Gebietsschema (Klassentemplate) |