C ++ strcoll () - Biblioteca padrão C ++

A função strcoll () em C ++ compara duas strings de terminação nula. A comparação é baseada no local atual definido pela categoria LC_COLLATE.

strcmp () é suficiente para a maioria das comparações de strings, mas ao lidar com caracteres Unicode, às vezes há certas nuances que tornam a comparação de strings byte a byte incorreta.

Por exemplo, se você estiver comparando duas strings no idioma espanhol, elas podem conter caracteres acentuados como á, é, í, ó, ú, ü, ñ, ¿, ¡etc.

Por padrão, esses caracteres acentuados vêm depois de todo o alfabeto de a, b, c … z. Tal comparação seria falha porque os diferentes acentos de a deveriam vir antes de b.

strcoll () usa a localidade atual para realizar a comparação, dando um resultado mais preciso em tais casos.

É definido no arquivo de cabeçalho.

protótipo strcoll ()

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

A função strcoll () leva dois argumentos: lhs e rhs. Ele compara o conteúdo de lhs e rhs com base no local atual da categoria LC_COLLATE.

Parâmetros strcoll ()

  • lhs e rhs: ponteiro para as strings terminadas em null para comparar.

strcoll () Valor de retorno

A função strcoll () retorna um:

  • valor positivo se o primeiro caractere diferente em lhs for maior que o caractere correspondente em rhs.
  • valor negativo se o primeiro caractere diferente em lhs for menor que o caractere correspondente em rhs.
  • 0 se lhs e rhs forem iguais.

Exemplo: Como funciona a função 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; )

Quando você executa o programa, a saída será:

 No local atual, Armstrong precede o Exército

Artigos interessantes...