Namespaces
Variants

std:: strcoll

From cppreference.net
Definido en el encabezado <cstring>
int strcoll ( const char * lhs, const char * rhs ) ;

Compara dos cadenas de bytes terminadas en nulo según la configuración regional actual definida por la categoría LC_COLLATE .

Contenidos

Parámetros

lhs, rhs - punteros a las cadenas de bytes terminadas en nulo a comparar

Valor de retorno

  • Valor negativo si lhs es menor que (precede) rhs .
  • 0 si lhs es igual a rhs .
  • Valor positivo si lhs es mayor que (sigue) rhs .

Notas

El orden de intercalación es el orden del diccionario: la posición de la letra en el alfabeto nacional (su clase de equivalencia ) tiene mayor prioridad que su caso o variante. Dentro de una clase de equivalencia, los caracteres en minúscula se intercalan antes que sus equivalentes en mayúscula y puede aplicarse un orden específico de la configuración regional a los caracteres con diacríticos. En algunas configuraciones regionales, grupos de caracteres se comparan como unidades de intercalación individuales. Por ejemplo, "ch" en checo sigue a "h" y precede a "i" , y "dzs" en húngaro sigue a "dz" y precede a "g" .

Ejemplo

#include <clocale>
#include <cstring>
#include <iostream>
int main()
{
    std::setlocale(LC_COLLATE, "cs_CZ.utf8");
    // Alternativamente, ISO-8859-2 (también conocido como Latin-2)
    // podría funcionar en algunos sistemas operativos:
    // std::setlocale(LC_COLLATE, "cs_CZ.iso88592");
    const char* s1 = "hrnec";
    const char* s2 = "chrt";
    std::cout << "En la configuración regional checa: ";
    if (std::strcoll(s1, s2) < 0)
        std::cout << s1 << " antes de " << s2 << '\n';
    else
        std::cout << s2 << " antes de " << s1 << '\n';
    std::cout << "En comparación lexicográfica: ";
    if (std::strcmp(s1, s2) < 0)
        std::cout << s1 << " antes de " << s2 << '\n';
    else
        std::cout << s2 << " antes de " << s1 << '\n';
}

Salida:

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

Véase también

compara dos cadenas anchas de acuerdo a la configuración regional actual
(función)
[virtual]
compara dos cadenas usando las reglas de intercalación de esta faceta
(función miembro protegida virtual de std::collate<CharT> )
transforma una cadena para que strcmp produzca el mismo resultado que strcoll
(función)