Compartilhar via


_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Executa uma comparação de maiúsculas e minúsculas de cadeias de caracteres.

Importante

_mbsicmpe _mbsicmp_l não pode ser usado em aplicativos executados no tempo de execução do Windows.Para obter mais informações, consulte Funções de CRT sem suporte com /ZW.

int _stricmp(
   const char *string1,
   const char *string2 
);
int _wcsicmp(
   const wchar_t *string1,
   const wchar_t *string2 
);
int _mbsicmp(
   const unsigned char *string1,
   const unsigned char *string2 
);
int _stricmp_l(
   const char *string1,
   const char *string2,
   _locale_t locale
);
int _wcsicmp_l(
   const wchar_t *string1,
   const wchar_t *string2,
   _locale_t locale
);
int _mbsicmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   _locale_t locale
);

Parâmetros

  • string1, string2
    Caracteres de terminação nula para comparar.

  • locale
    Localidade a usar.

Valor de retorno

O valor de retorno indica a relação de string1 para string2 da seguinte maneira.

Valor de retorno

Descrição

< 0

string1 menor que string2

0

string1 idêntico ao string2

> 0

string1 maior que string2

Em caso de erro, _mbsicmp retorna _NLSCMPERROR, que é definido em < String. h > e < mbstring.h >.

Comentários

O _stricmp ordinalmente função compara string1 e string2 após converter cada caractere em minúsculas e retorna um valor que indica sua relação. _stricmpdifere _stricoll que o _stricmp comparação será afetada somente por LC_CTYPE, que determina quais caracteres são maiúsculas e minúsculas. O _stricoll função compara cadeias de caracteres de acordo com ambos os LC_CTYPE e LC_COLLATE categorias de localidade, que inclui o caso e a ordem de agrupamento. Para obter mais informações sobre o LC_COLLATE categoria, consulte setlocale e categorias de localidade. As versões dessas funções sem o _l sufixo usam a localidade atual para o comportamento depende da localidade. As versões com o sufixo são idênticas, exceto que eles usam a localidade passada em seu lugar. Se a localidade não tiver sido definida, a localidade C é usada. Para obter mais informações, consulte Localidade.

Dica

_stricmp equivale a _strcmpi.Eles podem ser usados alternadamente, mas _stricmp é o padrão preferencial.

O _strcmpi função é equivalente a _stricmp e é fornecido para fins de compatibilidade com versões anteriores.

Como _stricmp minúsculas comparações, isso pode resultar em comportamento inesperado.

Para ilustrar quando caso a conversão por _stricmp afeta o resultado de uma comparação, suponha que você tenha duas cadeias de caracteres JOHNSTON e JOHN_HENRY. A cadeia de caracteres JOHN_HENRY será considerado inferior a JOHNSTON como "_" tem um valor de ASCII menor que um s minúsculo Na verdade, qualquer caractere que tem um valor ASCII entre 91 e 96 será considerado menor do que qualquer letra.

Se o strcmp função é usada em vez de _stricmp, JOHN_HENRY será maior que JOHNSTON.

_wcsicmpe _mbsicmp são versões de caractere largo e caracteres multibyte _stricmp. Os argumentos e o valor de retorno de _wcsicmp são cadeias de caracteres largos; aqueles de _mbsicmp são cadeias de caracteres multibyte. _mbsicmpreconhece sequências de caracteres multibyte de acordo com a página de código multibyte atual e retorna _NLSCMPERROR em caso de erro. Para obter mais informações, consulte páginas de código. Essas três funções comportam idêntico caso contrário.

_wcsicmpe wcscmp comportamento idêntico, exceto que wcscmp não converter seus argumentos para minúsculas antes de compará-los. _mbsicmpe _mbscmp comportamento idêntico, exceto que _mbscmp não converter seus argumentos para minúsculas antes de compará-los.

Você precisará chamar setlocale para _wcsicmp para trabalhar com caracteres Latino 1. A localidade C está em vigor por padrão, então, por exemplo, ä não serão comparados como iguais a Ä. Chamar setlocale com qualquer localidade que não seja a localidade C antes da chamada para _wcsicmp. O exemplo a seguir demonstra como _wcsicmp é sensível à localidade:

// crt_stricmp_locale.c
#include <string.h>
#include <stdio.h>
#include <locale.h>

int main() {
   setlocale(LC_ALL,"C");   // in effect by default
   printf("\n%d",_wcsicmp(L"ä", L"Ä"));   // compare fails
   setlocale(LC_ALL,"");
   printf("\n%d",_wcsicmp(L"ä", L"Ä"));   // compare succeeds
}

Uma alternativa é chamar _create_locale, _wcreate_locale e passe o objeto de localidade retornado como um parâmetro para _wcsicmp_l.

Todas essas funções validam seus parâmetros. Se qualquer um dos string1 ou string2 são ponteiros nulos, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação do parâmetro . Se a execução puder continuar, essas funções retornarão _NLSCMPERROR e definirão errno para EINVAL.

Mapeamentos da rotina de texto genérico

Rotina TCHAR.H

_UNICODE e _MBCS não definidos

_MBCS definido

_UNICODE definido

_tcsicmp

_stricmp

_mbsicmp

_wcsicmp

Requisitos

Rotina

Cabeçalho necessário

_stricmp, _stricmp_l

<string.h>

_wcsicmp, _wcsicmp_l

<string.h> ou <wchar.h>

_mbsicmp, _mbsicmp_l

<mbstring.h>

Para obter informações adicionais sobre compatibilidade, consulte Compatibilidade.

Exemplo

// crt_stricmp.c

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";

int main( void )
{
   char tmp[20];
   int result;

   // Case sensitive
   printf( "Compare strings:\n   %s\n   %s\n\n", string1, string2 );
   result = strcmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof(tmp), "less than" );
   else
      strcpy_s( tmp, _countof(tmp), "equal to" );
   printf( "   strcmp:   String 1 is %s string 2\n", tmp );

   // Case insensitive (could use equivalent _stricmp)
   result = _stricmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof(tmp), "less than" );
   else
      strcpy_s( tmp, _countof(tmp), "equal to" );
   printf( "   _stricmp:  String 1 is %s string 2\n", tmp );
}
  

Equivalência do .NET Framework

System::String::Compare

Consulte também

Referência

Manipulação da cadeia de caracteres (CRT)

memcmp, wmemcmp

_memicmp, _memicmp_l

strcmp, wcscmp, _mbscmp

Funções strcoll

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l