Namespaces
Variants

std:: collate

From cppreference.net
Definiert im Header <locale>
template < class CharT >
class collate ;

Die Klasse std::collate kapselt localespezifische Sortierung (Vergleich) und Hash-Bildung von Zeichenketten. Diese Facette wird von std::basic_regex verwendet und kann mittels std::locale::operator() direkt auf alle Standardalgorithmen angewandt werden, die ein Zeichenketten-Vergleichsprädikat erwarten.

cpp/locale/locale/facet std-collate-inheritance.svg

Vererbungsdiagramm

Inhaltsverzeichnis

Spezialisierungen

Die Standardbibliothek garantiert die Bereitstellung der folgenden Spezialisierungen (sie sind von jedem Locale-Objekt implementiert werden müssen ):

Definiert im Header <locale>
std :: collate < char > implementiert lexikographische Ordnung von Byte-Strings
std :: collate < wchar_t > implementiert lexikographische Ordnung von Wide-Strings

Verschachtelte Typen

Typ Definition
char_type CharT
string_type std:: basic_string < CharT >

Datenmitglieder

Mitglied Beschreibung
std::locale::id id [static] der Identifikator des Facet

Memberfunktionen

Konstruiert ein neues collate Facet
(öffentliche Elementfunktion)
Zerstört ein collate Facet
(geschützte Elementfunktion)
Ruft do_compare auf
(öffentliche Elementfunktion)
Ruft do_transform auf
(öffentliche Elementfunktion)
Ruft do_hash auf
(öffentliche Elementfunktion)

Geschützte Memberfunktionen

[virtual]
vergleicht zwei Zeichenketten gemäß den Kollationsregeln dieser Facette
(geschützte virtuelle Elementfunktion)
[virtual]
transformiert eine Zeichenkette, sodass Kollation durch Vergleich ersetzt werden kann
(geschützte virtuelle Elementfunktion)
[virtual]
erzeugt einen ganzzahligen Hash-Wert unter Verwendung der Kollationsregeln dieser Facette
(geschützte virtuelle Elementfunktion)

Beispiel

#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 << "Standard-Lokalsortierreihenfolge: ";
    std::sort(v.begin(), v.end());
    for (auto s : v)
        std::wcout << s << ' ';
    std::wcout << '\n';
    std::wcout << "Englische Lokalsortierreihenfolge: ";
    std::sort(v.begin(), v.end(), std::locale("en_US.UTF-8"));
    for (auto s : v)
        std::wcout << s << ' ';
    std::wcout << '\n';
    std::wcout << "Schwedische Lokalsortierreihenfolge: ";
    std::sort(v.begin(), v.end(), std::locale("sv_SE.UTF-8"));
    for (auto s : v)
        std::wcout << s << ' ';
    std::wcout << '\n';
}

Ausgabe:

Standard-Lokalsortierreihenfolge: Zebra ar förnamn zebra ängel år ögrupp
Englische Lokalsortierreihenfolge: ängel ar år förnamn ögrupp zebra Zebra
Schwedische Lokalsortierreihenfolge: ar förnamn zebra Zebra år ängel ögrupp

Siehe auch

vergleicht zwei Zeichenketten lexikografisch unter Verwendung des Collate-Facets dieser Locale
(öffentliche Elementfunktion von std::locale )
repräsentiert den systemseitig bereitgestellten std::collate für die benannte Locale
(Klassentemplate)