Namespaces
Variants

std:: strcoll

From cppreference.net
Défini dans l'en-tête <cstring>
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 <clocale>
#include <cstring>
#include <iostream>
int main()
{
    std::setlocale(LC_COLLATE, "cs_CZ.utf8");
    // Alternativement, ISO-8859-2 (alias Latin-2)
    // pourrait également fonctionner sur certains systèmes d'exploitation :
    // std::setlocale(LC_COLLATE, "cs_CZ.iso88592");
    const char* s1 = "hrnec";
    const char* s2 = "chrt";
    std::cout << "Dans les paramètres régionaux tchèques : ";
    if (std::strcoll(s1, s2) < 0)
        std::cout << s1 << " avant " << s2 << '\n';
    else
        std::cout << s2 << " avant " << s1 << '\n';
    std::cout << "En comparaison lexicographique : ";
    if (std::strcmp(s1, s2) < 0)
        std::cout << s1 << " avant " << s2 << '\n';
    else
        std::cout << s2 << " avant " << s1 << '\n';
}

Sortie :

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

Voir aussi

compare deux chaînes larges selon la locale actuelle
(fonction)
[virtual]
compare deux chaînes en utilisant les règles de collation de cette facette
(fonction membre protégée virtuelle de std::collate<CharT> )
transforme une chaîne de caractères pour que strcmp produise le même résultat que strcoll
(fonction)
Documentation C pour strcoll