Namensräume
Varianten
Aktionen

std::wcscoll

Von cppreference.com
< cpp‎ | string‎ | wide
 
 
 
 
Definiert in Header <cwchar>
int wcscoll( const wchar_t* lhs, const wchar_t* rhs );

Vergleicht zwei nullterminierte Wide-Strings gemäß dem zuletzt von std::setlocale installierten Locale, wie in der Kategorie LC_COLLATE definiert.

Inhalt

[bearbeiten] Parameter

lhs, rhs - Zeiger auf die zu vergleichenden nullterminierten Breitzeichenketten

[bearbeiten] Rückgabewert

Negativer Wert, wenn lhs kleiner ist als (vorangestellt) rhs.

0, wenn lhs gleich rhs ist.

Positiver Wert, wenn lhs größer ist als (nachfolgend) rhs.

[bearbeiten] Hinweise

Die Kollationsreihenfolge ist die Wörterbuchreihenfolge: Die Position des Buchstabens im nationalen Alphabet (seine Äquivalenzklasse) hat eine höhere Priorität als Groß-/Kleinschreibung oder Variante. Innerhalb einer Äquivalenzklasse werden Kleinbuchstaben vor ihren Großbuchstaben-Entsprechungen sortiert, und eine lokalespezifische Reihenfolge kann für Zeichen mit diakritischen Zeichen gelten. In einigen Locales werden Zeichengruppen als einzelne Kollationseinheiten verglichen. Zum Beispiel folgt "ch" im Tschechischen auf "h" und geht "i" voraus, und "dzs" im Ungarischen folgt auf "dz" und geht "g" voraus.

[bearbeiten] Beispiel

#include <clocale>
#include <iostream>
 
void try_compare(const wchar_t* p1, const wchar_t* p2)
{
    if (std::wcscoll(p1, p2) < 0)
        std::wcout << p1 << " before " << p2 << '\n';
    else
        std::wcout << p2 << " before " << p1 << '\n';
}
 
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout << "In the American locale: ";
    try_compare(L"hrnec", L"chrt");
 
    std::setlocale(LC_COLLATE, "cs_CZ.utf8");
    std::wcout << "In the Czech locale: ";
    try_compare(L"hrnec", L"chrt");
 
    std::setlocale(LC_COLLATE, "en_US.utf8");
    std::wcout << "In the American locale: ";
    try_compare(L"år", L"ängel");
 
    std::setlocale(LC_COLLATE, "sv_SE.utf8");
    std::wcout << "In the Swedish locale: ";
    try_compare(L"år", L"ängel");
}

Ausgabe

In the American locale: chrt before hrnec
In the Czech locale: hrnec before chrt
In the American locale: ängel before år
In the Swedish locale: år before ängel

[bearbeiten] Siehe auch

vergleicht zwei Strings gemäß der aktuellen Locale
(Funktion) [bearbeiten]
[virtuell]
vergleicht zwei Zeichenketten anhand der Sortierregeln dieses Facets
(virtual protected member function of std::collate<CharT>) [edit]
transformiert eine breite Zeichenkette so, dass wcscmp dasselbe Ergebnis wie wcscoll liefert
(Funktion) [bearbeiten]
C-Dokumentation für wcscoll