C ++ strcoll () - Biblioteca estándar de C ++

La función strcoll () en C ++ compara dos cadenas de terminación nulas. La comparación se basa en la configuración regional actual definida por la categoría LC_COLLATE.

strcmp () es suficiente para la mayoría de las comparaciones de cadenas, pero cuando se trata de caracteres Unicode, a veces hay ciertos matices que hacen que la comparación de cadenas byte a byte sea incorrecta.

Por ejemplo, si está comparando dos cadenas en español, pueden contener caracteres acentuados como á, é, í, ó, ú, ü, ñ, ¿, ¡etc.

De forma predeterminada, estos caracteres acentuados vienen después de todo el alfabeto de a, b, c… z. Tal comparación sería errónea porque los diferentes acentos de a deberían estar antes de b.

strcoll () usa la configuración regional actual para realizar la comparación, dando un resultado más preciso en tales casos.

Está definido en el archivo de encabezado.

prototipo strcoll ()

 int strcoll (const char * lhs, const char * rhs);

La función strcoll () toma dos argumentos: lhs y rhs. Compara el contenido de lhs y rhs según la configuración regional actual de la categoría LC_COLLATE.

Parámetros strcoll ()

  • lhs y rhs: puntero a las cadenas terminadas en nulo para comparar.

strcoll () Valor de retorno

La función strcoll () devuelve:

  • valor positivo si el primer carácter diferente en lhs es mayor que el carácter correspondiente en rhs.
  • valor negativo si el primer carácter diferente en lhs es menor que el carácter correspondiente en rhs.
  • 0 si lhs y rhs son iguales.

Ejemplo: ¿Cómo funciona la función strcoll ()?

 #include #include using namespace std; int main() ( char lhs() = "Armstrong"; char rhs() = "Army"; int result; result = strcoll(lhs,rhs); cout < 0) cout << rhs << " precedes " << lhs << endl; else if (result < 0) cout << lhs << " precedes " << rhs << endl; else cout << lhs << " and " << rhs << " are same" << endl; return 0; )

Cuando ejecute el programa, la salida será:

 En la localidad actual, Armstrong precede al ejército

Articulos interesantes...