Compartilhar via


_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Realiza uma comparação de seqüências de caracteres em minúsculas.

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
    Seqüências de terminação nula para comparar.

  • locale
    Localidade usar.

Valor de retorno

O valor retornado indica a relação de string1 para string2 sistema autônomo a seguir.

Valor de Retorno

Descrição

< 0

string1 menor que string2

0

string1 idêntico a string2

> 0

string1 maior que string2

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

Comentários

The _stricmp função lexicograficamente compara versões em minúsculas do string1 e string2 e retorna um valor indicando seu Relação. _stricmp é diferente de _stricoll em que o _stricmp comparação é afetada por LC_CTYPE, enquanto o _stricoll comparação é feito de acordo com o LC_CTYPE e LC_COLLATE categorias da localidade. Para obter mais informações sobre o LC_COLLATE categoria, consulte setlocale and Categorias de localidade.As versões dessas funções sem o _l sufixo usam a localidade corrente para comportamento dependente de localidade. As versões com o sufixo são idênticas exceto que eles usam a localidade do passado em vez disso.For more information, see Localidade.

The _strcmpi função é equivalente a _stricmp e é fornecida somente para compatibilidade com versões anteriores.

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

Para ilustrar quando caso conversão por stricmp afeta o resultado de uma comparação pressupõem que você tenha duas seqüências de caracteres JOHNSTON e JOHN_HENRY. Seqüência de caracteres serão considerados JOHN_HENRY menor que JOHNSTON como "_" tem um valor ASCII menor do que uma letra em minúsculas S.Na verdade, qualquer caractere que possui um valor ASCII entre 91 e 96 será considerada menor do que qualquer letra.

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

_wcsicmp e _mbsicmpsão versões de caractere largo e caracteres de multibyte de _stricmp. Os argumentos e o valor retornado do _wcsicmp são caractere largos strings; as de _mbsicmp são seqüências de caractere de multibyte. _mbsicmp reconhece seqüências de caractere multibyte de acordo com a página de código multibyte corrente e retorna _NLSCMPERROR em um erro. (Para obter mais informações, consulte Páginas de código.) Especifique estas três funções identicamente outro comportam.

_wcsicmp e wcscmp tenham comportamento idêntico, exceto que wcscmp não converte os argumentos em minúsculas antes de compará-los. _mbsicmp e _mbscmp tenham comportamento idêntico, exceto que _mbscmp não converte os argumentos em minúsculas antes de compará-los.

Você precisará telefonar setlocale for _wcsicmp para trabalhar com caracteres Latina 1. A localidade C é em vigor por padrão, então, por exemplo, ä irá comparar igual a Ä. De telefonarsetlocale com qualquer localidade diferente da localidade antes da telefonar para C _wcsicmp. O exemplo a seguir mostra 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 e passe para o objeto de localidade retornado sistema autônomo um parâmetro para _wcsicmp_l.

Todas essas funções validar seus parâmetros.Se qualquer um dos string1 ou string2 são NULL ponteiros, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro . Se a execução for permitida para continuar, essas funções retornam _NLSCMPERROR e conjunto errno para EINVAL.

Mapeamentos de rotina de texto genérica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_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 compatibilidade, consulte Compatibilidade na introdução.

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 );
}

Compare strings:    The quick brown dog jumps over the lazy fox    The QUICK brown dog jumps over the lazy fox     strcmp:   String 1 is greater than string 2    _stricmp:  String 1 is equal to string 2

Equivalente do NET Framework

sistema::String::comparar

Consulte também

Referência

Manipulação de seqüência 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