Namensräume
Varianten
Aktionen

std::collate

Von cppreference.com
< cpp‎ | locale
 
 
 
 
 
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.

cpp/locale/locale/facetstd-collate-inheritance.svg

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) [bearbeiten]
ruft do_transform auf
(public member function) [bearbeiten]
ruft do_hash auf
(public member function) [bearbeiten]

[bearbeiten] Protected Member-Funktionen

[virtuell]
vergleicht zwei Zeichenketten anhand der Sortierregeln dieses Facets
(virtual protected member function) [bearbeiten]
[virtuell]
transformiert eine Zeichenkette, damit die Sortierung durch einen Vergleich ersetzt werden kann
(virtual protected member function) [bearbeiten]
[virtuell]
erzeugt einen ganzzahligen Hash-Wert anhand der Sortierregeln dieses Facets
(virtual protected member function) [bearbeiten]

[bearbeiten] 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 << "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) [bearbeiten]
repräsentiert das systemseitig bereitgestellte std::collate für das benannte Gebietsschema
(Klassentemplate) [bearbeiten]