Compartilhar via


_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Executar uma comparação em minúsculas de cadeias de caracteres.

Observação importanteImportante

_mbsicmp e _mbsicmp_l não podem ser usados em aplicativos executados em Tempo de Execução do Windows.Para obter mais informações, consulte Funções de CRT não suportadas 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
    Cadeias de caracteres NULL- terminadas para comparar.

  • locale
    A localidade usar.

Valor de retorno

O valor de retorno indica a relação de string1 a string2 como segue.

Valor de Retorno

Descrição

< 0

string1 menor que string2

0

string1 idêntico a string2

> 0

string1 maior do que string2

Em um erro, _mbsicmp retorna _NLSCMPERROR, que é definido em STRING.H e em. MBSTRING.H.

Comentários

A função de _stricmplexicographically comparar versões de string1 em minúsculas e de string2 e retorna um valor indicando sua relação._stricmpdifere de _stricollda comparação de _stricmpé afetado por LC_CTYPE, enquanto a comparação de _stricollestá de acordo com as categorias de LC_CTYPEe de LC_COLLATEda localidade.Para obter mais informações sobre a categoria de LC_COLLATE, consulte setlocale e Categorias de localidade.As versões dessas funções sem o sufixo de _l usam a localidade atual para o comportamento do são dependentes.As versões com o sufixo são idênticas exceto que usam a localidade passada no lugar.Para obter mais informações, consulte Localidade.

ObservaçãoObservação

_stricmp é equivalente a _strcmpi.Podem ser usados de forma intercambiável mas _stricmp preferido é o padrão.

A função de _strcmpié equivalente a _stricmpe é fornecida para compatibilidade com versões anteriores somente.

Porque stricmp faz comparações em minúsculas, pode resultar em um comportamento inesperado.

Para ilustrar quando a conversão dos casos por stricmp afeta o resultado de uma comparação, suponha que você tenha as duas cadeias de caracteres JOHNSTON e JOHN_HENRY.A cadeia de caracteres JOHN_HENRY será considerada menor que JOHNSTON porque “_” tem um valor ASCII menor do que uma letra minúscula S.Na verdade, qualquer caractere que tem um valor ASCII entre 91 e 96 serão vistos menos de qualquer letra.

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

_wcsicmp e _mbsicmp são versões de largo- caractere e o caractere multibyte- de _stricmp.Os argumentos e o valor de retorno de _wcsicmp são cadeias de caracteres de largo- caractere; essas de _mbsicmp são cadeias de caracteres de multibyte- caractere._mbsicmp reconhece sequências de multibyte- caractere de acordo com a página atual de código de multibyte e retorna _NLSCMPERROR em um erro.(Para obter mais informações, consulte Páginas de código.) Essas três funções se comportam de forma idêntica.

_wcsicmp e wcscmp se comportam de forma idêntica exceto que wcscmp não converte os argumentos para minúsculas antes de compará-las._mbsicmp e _mbscmp se comportam de forma idêntica exceto que _mbscmp não converte os argumentos para minúsculas antes de compará-las.

Você precisará chamar setlocale para que _wcsicmp trabalhar com caracteres do latim 1.A localidade de C é aplicada por padrão, portanto, por exemplo, o ä não comparará igual a Ä.Chame setlocale com qualquer localidade diferente da localidade de C antes da chamada a _wcsicmp.O exemplo a seguir demonstra como _wcsicmpé sensível a 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 retornado da localidade como um parâmetro para _wcsicmp_l.

Todas essas funções validam seus parâmetros.Se string1 ou string2 são ponteiros de NULL , o manipulador inválido do parâmetro é invocado, como descrito em Validação de parâmetro .Se a execução é permitida continuar, essas funções _NLSCMPERROR de retorno e errno defina a EINVAL.

Mapeamentos da rotina de Genérico- texto

Rotina de TCHAR.H

_UNICODE & _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 informações extras de compatibilidade Compatibilidade na introdução, consulte.

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 de cadeia de caracteres (CRT)

memcmp, wmemcmp

_memicmp, _memicmp_l

strcmp, wcscmp, _mbscmp

Funções de 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