Namespaces
Variants

strcoll

From cppreference.net
< c ‎ | string ‎ | byte
Definido en el encabezado <string.h>
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 <locale.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
    setlocale(LC_COLLATE, "cs_CZ.utf8");
    // Alternativamente, ISO-8859-2 (también conocido como Latin-2)
    // también puede funcionar en algunos sistemas operativos:
    // 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);
}

Salida:

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

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.24.4.3 La función strcoll (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.24.4.3 La función strcoll (p: TBD)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.24.4.3 La función strcoll (p: 366)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.21.4.3 La función strcoll (p: 329)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 4.11.4.3 La función strcoll

Véase también

(C95)
compara dos cadenas anchas de acuerdo a la configuración regional actual
(función)
transforma una cadena para que strcmp produzca el mismo resultado que strcoll
(función)
(C95)
transforma una cadena ancha para que wcscmp produzca el mismo resultado que wcscoll
(función)
compara dos cadenas
(función)