_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
Executar uma comparação em minúsculas de cadeias de caracteres.
Importante |
---|
_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çã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
Consulte também
Referência
Manipulação de cadeia de caracteres (CRT)
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l