Namespaces
Variants

strcoll

From cppreference.net
< c ‎ | string ‎ | byte
Definiert in Header <string.h>
int strcoll ( const char * lhs, const char * rhs ) ;

Vergleicht zwei nullterminierte Byte-Zeichenketten 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 eine 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 werden Gruppen von Zeichen als einzelne Sortiereinheiten verglichen. 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 <locale.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
    setlocale(LC_COLLATE, "cs_CZ.utf8");
    // Alternativ könnte ISO-8859-2 (auch bekannt als Latin-2)
    // auf einigen Betriebssystemen funktionieren:
    // setlocale(LC_COLLATE, "cs_CZ.iso88592");
    const char* s1 = "hrnec";
    const char* s2 = "chrt";
    printf("In the Czech locale: ");
    if (strcoll(s1, s2) < 0)
        printf("%s before %s\n", s1, s2);
    else
        printf("%s before %s\n", s2, s1);
    printf("In lexicographical comparison: ");
    if (strcmp(s1, s2) < 0)
        printf("%s before %s\n", s1, s2);
    else
        printf("%s before %s\n", s2, s1);
}

Ausgabe:

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

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.24.4.3 Die strcoll-Funktion (S: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.24.4.3 Die strcoll-Funktion (S: TBD)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.24.4.3 Die strcoll-Funktion (S: 366)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.21.4.3 Die strcoll-Funktion (S: 329)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.11.4.3 Die strcoll-Funktion

Siehe auch

(C95)
vergleicht zwei Wide-Strings gemäß der aktuellen Locale
(Funktion)
transformiert einen String so, dass strcmp das gleiche Ergebnis wie strcoll liefern würde
(Funktion)
(C95)
transformiert einen Wide-String so, dass wcscmp das gleiche Ergebnis wie wcscoll liefern würde
(Funktion)
vergleicht zwei Strings
(Funktion)
C++-Dokumentation für strcoll