Namensräume
Varianten
Aktionen

strcoll

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

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

Inhalt

[bearbeiten] Parameter

lhs, rhs - Zeiger auf die zu vergleichenden nullterminierten Byte-Strings

[bearbeiten] Rückgabewert

  • Negativer Wert, wenn lhs kleiner als (vor) rhs ist.
  • 0, wenn lhs gleich rhs ist.
  • Positiver Wert, wenn lhs größer als (nach) rhs ist.

[bearbeiten] Hinweise

Die Sortierreihenfolge ist die alphabetische Reihenfolge: Die Position des Buchstabens im nationalen Alphabet (seine Äquivalenzklasse) hat Vorrang vor seiner Groß-/Kleinschreibung oder Variante. Innerhalb einer Äquivalenzklasse werden Kleinbuchstaben vor ihren Großbuchstaben-Äquivalenten sortiert, und die lokalabhängige Reihenfolge kann für Zeichen mit diakritischen Zeichen gelten. In einigen Locales werden Zeichengruppen als einzelne Sortiereinheiten 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 <locale.h>
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    setlocale(LC_COLLATE, "cs_CZ.utf8");
    // Alternatively, ISO-8859-2 (a.k.a. Latin-2)
    // may also work on some OS:
    // 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

[bearbeiten] Referenzen

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

[bearbeiten] Siehe auch

vergleicht zwei breite Zeichenketten gemäß der aktuellen Locale
(Funktion) [bearbeiten]
transformiert einen String so, dass strcmp dasselbe Ergebnis wie strcoll liefert
(Funktion) [bearbeiten]
transformiert einen Wide-String, sodass wcscmp das gleiche Ergebnis wie wcscoll liefert
(Funktion) [bearbeiten]
vergleicht zwei Strings
(Funktion) [bearbeiten]
C++ Dokumentation für strcoll