Namespaces
Variants

strcoll

From cppreference.net
< c ‎ | string ‎ | byte
Défini dans l'en-tête <string.h>
int strcoll ( const char * lhs, const char * rhs ) ;

Compare deux chaînes d'octets terminées par un caractère nul selon les paramètres régionaux actuels tels que définis par la catégorie LC_COLLATE .

Table des matières

Paramètres

lhs, rhs - pointeurs vers les chaînes d'octets terminées par un caractère nul à comparer

Valeur de retour

  • Valeur négative si lhs est inférieur à (précède) rhs .
  • 0 si lhs est égal à rhs .
  • Valeur positive si lhs est supérieur à (suit) rhs .

Notes

L'ordre de collation est l'ordre du dictionnaire : la position de la lettre dans l'alphabet national (sa classe d'équivalence ) a une priorité plus élevée que sa casse ou sa variante. Au sein d'une classe d'équivalence, les caractères minuscules se trient avant leurs équivalents majuscules et l'ordre spécifique aux paramètres régionaux peut s'appliquer aux caractères avec diacritiques. Dans certaines régions, des groupes de caractères sont comparés comme des unités de collation uniques. Par exemple, "ch" en tchèque suit "h" et précède "i" , et "dzs" en hongrois suit "dz" et précède "g" .

Exemple

#include <locale.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
    setlocale(LC_COLLATE, "cs_CZ.utf8");
    // Alternativement, ISO-8859-2 (alias Latin-2)
    // peut également fonctionner sur certains systèmes d'exploitation :
    // setlocale(LC_COLLATE, "cs_CZ.iso88592");
    const char* s1 = "hrnec";
    const char* s2 = "chrt";
    printf("Dans les paramètres régionaux tchèques : ");
    if (strcoll(s1, s2) < 0)
        printf("%s avant %s\n", s1, s2);
    else
        printf("%s avant %s\n", s2, s1);
    printf("En comparaison lexicographique : ");
    if (strcmp(s1, s2) < 0)
        printf("%s avant %s\n", s1, s2);
    else
        printf("%s avant %s\n", s2, s1);
}

Sortie :

Dans les paramètres régionaux tchèques : hrnec avant chrt
En comparaison lexicographique : chrt avant hrnec

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.24.4.3 Fonction strcoll (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.24.4.3 La fonction strcoll (p: TBD)
  • Norme C11 (ISO/CEI 9899:2011):
  • 7.24.4.3 La fonction strcoll (p: 366)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.21.4.3 La fonction strcoll (p: 329)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 4.11.4.3 La fonction strcoll

Voir aussi

(C95)
compare deux chaînes larges selon la locale actuelle
(fonction)
transforme une chaîne pour que strcmp produise le même résultat que strcoll
(fonction)
(C95)
transforme une chaîne large pour que wcscmp produise le même résultat que wcscoll
(fonction)
compare deux chaînes
(fonction)
Documentation C++ pour strcoll