_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

 

Pour obtenir la dernière documentation sur Visual Studio 2017 RC, consultez Documentation Visual Studio 2017 RC.

Effectue une comparaison de chaînes sans tenir compte de la casse.

System_CAPS_ICON_important.jpg Important

_mbsicmp et _mbsicmp_l ne peuvent pas être utilisées dans les applications qui s'exécutent dans Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge avec /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  
);  

Paramètres

string1, string2
Chaîne terminée par Null à comparer.

locale
Paramètres régionaux à utiliser.

La valeur de retour indique la relation de string1 avec string2 comme suit.

Valeur de retourDescription
< 0string1 inférieure à string2
0string1 identique à string2
> 0string1 supérieur à string2

En cas d'erreur, _mbsicmp retourne _NLSCMPERROR, qui est défini dans <string.h> et <mbstring.h>.

La fonction _stricmp effectue une comparaison ordinale de string1 et de string2 après la conversion de chaque caractère en minuscule, et retourne une valeur qui indique leur relation. _stricmp diffère de _stricoll en cela que la comparaison de _stricmp est affectée seulement par LC_CTYPE, qui détermine quels caractères sont en majuscule et en minuscule. La fonction _stricoll compare des chaînes en fonction à la fois des catégories LC_CTYPE et LC_COLLATE des paramètres régionaux, ce qui comprend la casse et l'ordre de classement. Pour plus d’informations sur la LC_COLLATE catégorie, consultez setlocale et catégories de paramètres régionaux. Les versions de ces fonctions sans le suffixe _l utilisent les paramètres régionaux actuels pour le comportement dépendant des paramètres régionaux. Les versions avec le suffixe sont identiques, sauf qu'elles utilisent à la place les paramètres régionaux passés en entrée. Si les paramètres régionaux n'ont pas été définis, les paramètres régionaux C sont utilisés. Pour plus d’informations, consultez Locale.

System_CAPS_ICON_note.jpg Remarque

_stricmp équivaut à _strcmpi. Elles peuvent être utilisés indifféremment, mais _stricmp est la norme préférée.

La fonction _strcmpi est équivalente à _stricmp et elle est fournie seulement à des fins de compatibilité descendante.

Comme _stricmp effectue des comparaisons de minuscules, elle peut aboutir à un comportement inattendu.

Pour illustrer la façon dont la conversion de la casse par _stricmp affecte le résultat d'une comparaison, supposons que vous avez les deux chaînes JOHNSTON et JOHN_HENRY. La chaîne JOHN_HENRY sera considérée comme inférieure à JOHNSTON car le « _ » a une valeur ASCII inférieure à un minuscule s En fait, n’importe quel caractère qui a une valeur ASCII comprise entre 91 et 96 sera considérée comme inférieure à n’importe quelle lettre.

Si le strcmp fonction est utilisée à la place de _stricmp, JOHN_HENRY sera supérieur à JOHNSTON.

_wcsicmp et _mbsicmp sont des versions à caractères larges et à caractères multioctets de _stricmp. Les arguments et la valeur de retour de _wcsicmp sont des chaînes de caractères larges ; ceux de _mbsicmp sont des chaînes de caractères multioctets. _mbsicmp reconnaît les séquences de caractères multioctets selon la page de codes multioctets active et retourne _NLSCMPERROR en cas d'erreur. Pour plus d’informations, consultez Pages de codes. Ces trois fonctions se comportent sinon de façon identique.

_wcsicmp et wcscmp se comportent de façon identique, sauf que wcscmp ne convertit pas ses arguments en minuscules avant de les comparer. _mbsicmp et _mbscmp se comportent de façon identique, sauf que _mbscmp ne convertit pas ses arguments en minuscules avant de les comparer.

Vous devez appeler setlocale pour _wcsicmp pour travailler avec des caractères Latin 1. Les paramètres régionaux C sont appliqués par défaut et par exemple, « ä » n'est pas considéré comme étant égal à « Ä ». Appelez setlocale avec n'importe quels paramètres régionaux autres que les paramètres régionaux C avant d'appeler _wcsicmp. L'exemple suivant montre comment _wcsicmp est sensible aux paramètres régionaux :

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

Une alternative consiste à appeler _create_locale, _wcreate_locale et transmettez l’objet de paramètres régionaux retournée en tant que paramètre _wcsicmp_l.

Toutes ces fonctions valident leurs paramètres. Si le paramètre string1 ou string2 sont des pointeurs null, le Gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre . Si l'exécution est autorisée à se poursuivre, ces fonctions retournent _NLSCMPERROR et définissent errno avec la valeur EINVAL.

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE et _MBCS non définis_MBCS défini_UNICODE défini
_tcsicmp_stricmp_mbsicmp_wcsicmp
RoutineEn-tête requis
_stricmp, _stricmp_l<string.h>
_wcsicmp, _wcsicmp_l<string.h> ou <wchar.h>
_mbsicmp, _mbsicmp_l<mbstring.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité.

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

Manipulation de chaînes
memcmp, wmemcmp
_memicmp, _memicmp_l
strcmp, wcscmp, _mbscmp
strcoll (fonctions)
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

Afficher: