Se recomienda usar Visual Studio 2017

_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Realiza una comparación de cadenas sin distinción entre mayúsculas y minúsculas.

System_CAPS_ICON_important.jpg Importante

_mbsicmp y _mbsicmp_l no se pueden usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para más información, vea Funciones de CRT no admitidas con /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
Cadenas terminadas en NULL que se van a comparar.

locale
Configuración regional que se va a usar.

El valor devuelto indica la relación entre string1 y string2 como se indica a continuación.

Valor devueltoDescripción
< 0string1 es menor que string2
0string1 es idéntica a string2
> 0string1 es mayor que string2

En caso de error, _mbsicmp devuelve _NLSCMPERROR, que se define en <string.h> y <mbstring.h>.

La función _stricmp realiza una comparación ordinal de string1 y string2 después de convertir cada carácter a minúsculas y devuelve un valor que indica su relación. _stricmp difiere de _stricoll en que la comparación _stricmp solo se ve afectada por LC_CTYPE, que determina qué caracteres van en mayúscula y cuáles en minúscula. La función _stricoll compara las cadenas según las categorías LC_CTYPE y LC_COLLATE de la configuración regional, lo que incluye el uso de mayúsculas y minúsculas y el orden de intercalación. Para obtener más información acerca de la LC_COLLATE categoría, vea setlocale y categorías de configuración regional. Las versiones de estas funciones sin el sufijo _l utilizan la configuración regional actual para el comportamiento que depende de la configuración regional. Las versiones con el sufijo son idénticas, salvo que usan el parámetro de configuración regional que se pasa. Si no se ha establecido la configuración regional, se utiliza la configuración regional de C. Para obtener más información, vea Locale.

System_CAPS_ICON_note.jpg Nota

_stricmp es equivalente a _strcmpi. Se pueden indistintamente, pero _stricmp es el estándar preferido.

La función _strcmpies equivalente a _stricmpy se proporciona por razones de compatibilidad con versiones anteriores.

Dado que _stricmp realiza comparaciones de minúsculas, podría producir un comportamiento inesperado.

Para ilustrar en qué casos la conversión de mayúsculas y minúsculas por parte de _stricmp afecta al resultado de una comparación, supongamos que se tienen las cadenas JOHNSTON y JOHN_HENRY. La cadena JOHN_HENRY se considera menor que JOHNSTON porque "_" tiene un valor ASCII menor que una s minúscula. De hecho, cualquier carácter que tiene un valor ASCII entre 91 y 96 se considera menor que cualquier letra.

Si el strcmp función se utiliza en lugar de _stricmp, JOHN_HENRY será mayor que JOHNSTON.

_wcsicmp y _mbsicmp son versiones de caracteres anchos y multibyte de _stricmp. Los argumentos y el valor devuelto de _wcsicmp son cadenas de caracteres anchos; los de _mbsicmp son cadenas de caracteres multibyte. _mbsicmp reconoce secuencias de caracteres multibyte según la página actual de códigos multibyte y devuelve _NLSCMPERROR cuando se produce un error. Para obtener más información, consulte páginas de códigos. Estas tres funciones se comportan exactamente igual.

_wcsicmp y wcscmp se comportan exactamente igual, salvo que wcscmp no convierte los argumentos en minúsculas antes de compararlos. _mbsicmp y _mbscmp se comportan exactamente igual, salvo que _mbscmp no convierte los argumentos en minúsculas antes de compararlos.

Debe llamar a setlocale para _wcsicmp para trabajar con caracteres de Latín 1. La configuración regional de C está activada de forma predeterminada, de modo que, por ejemplo, ä no se considera igual a Ä. Llame a setlocale con cualquier configuración regional distinta de la configuración regional de C antes de llamar a _wcsicmp. En el ejemplo siguiente se muestra cómo la configuración regional afecta a _wcsicmp:

// 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  
}  

Una alternativa consiste en llamar a _create_locale, _wcreate_locale y pase el objeto de configuración regional devuelto como parámetro para _wcsicmp_l.

Todas estas funciones validan sus parámetros. Si el valor string1 o string2 son punteros nulos, se invoca el controlador de parámetros no válidos, como se describe en validación del parámetro . Si la ejecución puede continuar, estas funciones devuelven _NLSCMPERROR y establecen errno en EINVAL.

Asignaciones de rutina de texto genérico

Rutina TCHAR.H_UNICODE y _MBCS no definidos_MBCS definido_UNICODE definido
_tcsicmp_stricmp_mbsicmp_wcsicmp
RutinaEncabezado necesario
_stricmp, _stricmp_l<string.h>
_wcsicmp, _wcsicmp_l<string.h> o <wchar.h>
_mbsicmp, _mbsicmp_l<mbstring.h>

Para obtener más información sobre compatibilidad, vea Compatibilidad.

// 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  

System::String::Compare

Manipulación de cadenas
memcmp, wmemcmp
_memicmp, _memicmp_l
strcmp, wcscmp, _mbscmp
strcoll (función)
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

Mostrar: