Namespaces
Variants

std:: strcoll

From cppreference.net
Definiert im Header <cstring>
int strcoll ( const char * lhs, const char * rhs ) ;

Vergleicht zwei nullterminierte Byte-Strings gemäß der aktuellen Locale, wie durch die LC_COLLATE Kategorie definiert.

Inhaltsverzeichnis

Parameter

lhs, rhs - Zeiger auf die nullterminierten Byte-Strings zum Vergleichen

Rückgabewert

  • Negativer Wert, falls lhs kleiner als (vorangeht) rhs ist.
  • 0 falls lhs gleich rhs ist.
  • Positiver Wert, falls lhs größer als (folgt) rhs ist.

Hinweise

Die Sortierreihenfolge ist die Wörterbuchreihenfolge: Die Position des Buchstabens im nationalen Alphabet (seine Äquivalenzklasse ) hat höhere Priorität als seine Groß-/Kleinschreibung oder Variante. Innerhalb einer Äquivalenzklasse werden Kleinbuchstaben vor ihren Großbuchstaben-Äquivalenten sortiert, und eine gebietsschemaspezifische Reihenfolge kann auf Zeichen mit diakritischen Zeichen angewendet werden. In einigen Gebietsschemata vergleichen Zeichengruppen als einzelne Sortiereinheiten . Zum Beispiel folgt "ch" im Tschechischen auf "h" und geht vor "i" , und "dzs" im Ungarischen folgt auf "dz" und geht vor "g" .

Beispiel

#include <clocale>
#include <cstring>
#include <iostream>
int main()
{
    std::setlocale(LC_COLLATE, "cs_CZ.utf8");
    // Alternativ könnte ISO-8859-2 (auch bekannt als Latin-2)
    // auf einigen Betriebssystemen funktionieren:
    // std::setlocale(LC_COLLATE, "cs_CZ.iso88592");
    const char* s1 = "hrnec";
    const char* s2 = "chrt";
    std::cout << "In the Czech locale: ";
    if (std::strcoll(s1, s2) < 0)
        std::cout << s1 << " before " << s2 << '\n';
    else
        std::cout << s2 << " before " << s1 << '\n';
    std::cout << "In lexicographical comparison: ";
    if (std::strcmp(s1, s2) < 0)
        std::cout << s1 << " before " << s2 << '\n';
    else
        std::cout << s2 << " before " << s1 << '\n';
}

Ausgabe:

In the Czech locale: hrnec before chrt
In lexicographical comparison: chrt before hrnec

Siehe auch

vergleicht zwei Breitzeichenketten gemäß der aktuellen Locale
(Funktion)
[virtual]
vergleicht zwei Zeichenketten unter Verwendung der Kollationsregeln dieser Facette
(virtuelle geschützte Memberfunktion von std::collate<CharT> )
transformiert eine Zeichenkette, sodass strcmp das gleiche Ergebnis wie strcoll liefern würde
(Funktion)
C-Dokumentation für strcoll