_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
Consulte também
Referência
Manipulação da cadeia de caracteres (CRT)
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l