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