_stricmp、_wcsicmp、_mbsicmp、_stricmp_l、_wcsicmp_l、_mbsicmp_l_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

文字列の大文字と小文字を区別しない比較を実行します。Performs a case-insensitive comparison of strings.


_mbsicmp_mbsicmp_l Windows ランタイムで実行するアプリケーションでは使用できません。_mbsicmp and _mbsicmp_l cannot be used in applications that execute in the Windows Runtime. 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。For more information, see CRT functions not supported in Universal Windows Platform apps.


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


string1string2string1, string2
Null で終わる比較対象の文字列。Null-terminated strings to compare.

使用するロケール。Locale to use.

戻り値Return Value

戻り値の関係を示すstring1string2次のようにします。The return value indicates the relation of string1 to string2 as follows.

戻り値Return value 説明Description
< 0< 0 string1より小さいstring2string1 less than string2
00 string1と同じstring2string1 identical to string2
> 0> 0 string1より大きいstring2string1 greater than string2

エラーが発生した、 _mbsicmp返しますするとで定義されている<string.h > と<mbstring.h >。On an error, _mbsicmp returns _NLSCMPERROR, which is defined in <string.h> and <mbstring.h>.


_Stricmp関数序数に基づく比較string1string2との関係を示す値を小文字で返す各文字を変換した後です。The _stricmp function ordinally compares string1 and string2 after converting each character to lowercase, and returns a value indicating their relationship. _stricmpとは異なります _stricoll点で、 _stricmp比較がのみ影響を受けましたLC_CTYPE、どの文字が上限を決定し、小文字します。_stricmp differs from _stricoll in that the _stricmp comparison is only affected by LC_CTYPE, which determines which characters are upper and lowercase. _Stricoll関数が両方に従って文字列を比較し、 LC_CTYPELC_COLLATE大文字と小文字および照合順序の両方が含まれているロケールのカテゴリ順序です。The _stricoll function compares strings according to both the LC_CTYPE and LC_COLLATE categories of the locale, which includes both the case and the collation order. 詳細については、 LC_COLLATEカテゴリを参照してくださいsetlocale、_wsetlocaleロケールのカテゴリです。For more information about the LC_COLLATE category, see setlocale and Locale Categories. この関数のバージョン、 _lサフィックスは、ロケールに依存する動作に現在のロケールを使用します。The versions of these functions without the _l suffix use the current locale for locale-dependent behavior. サフィックスが付いているバージョンは、代わりに渡されたロケールを使用する点を除き、同じです。The versions with the suffix are identical except that they use the locale passed in instead. ロケールが設定されていない場合は、C ロケールが使用されます。If the locale has not been set, the C locale is used. 詳細については、「 Locale」を参照してください。For more information, see Locale.


_stricmpは等価 _strcmpiです。_stricmp is equivalent to _strcmpi. 同じ意味で使用できますが、 _stricmpは標準の優先します。They can be used interchangeably but _stricmp is the preferred standard.

_Strcmpi関数と同じ _stricmp旧バージョンとの互換性を保つのために提供されます。The _strcmpi function is equivalent to _stricmp and is provided for backward compatibility only.

_Stricmpは小文字の比較、予期しない動作する可能性があります。Because _stricmp does lowercase comparisons, it may result in unexpected behavior.

ときに説明するためにで、大文字 _stricmp結果に影響の比較には、JOHNSTON と JOHN_HENRY は、2 つの文字列を使用するいると仮定します。To illustrate when case conversion by _stricmp affects the outcome of a comparison, assume that you have the two strings JOHNSTON and JOHN_HENRY. "" の ASCII 値は小文字の S よりも小さいので、JOHN_HENRY は JOHNSTON よりも小さいとみなされます。実際、91 ~ 96 の ASCII 値を持つ文字はすべて、他の文字よりも小さいと判断されます。The string JOHN_HENRY will be considered less than JOHNSTON because the "" has a lower ASCII value than a lowercase S. In fact, any character that has an ASCII value between 91 and 96 will be considered less than any letter.

場合、 strcmp関数がの代わりに使用される _stricmpJOHN_HENRY は JOHNSTON よりも大きい値を指定します。If the strcmp function is used instead of _stricmp, JOHN_HENRY will be greater than JOHNSTON.

_wcsicmp_mbsicmpのワイド文字とマルチバイト文字バージョンは、 _stricmpです。_wcsicmp and _mbsicmp are wide-character and multibyte-character versions of _stricmp. 引数と戻り値の _wcsicmpワイド文字は、文字列以外の _mbsicmpマルチバイト文字列です。The arguments and return value of _wcsicmp are wide-character strings; those of _mbsicmp are multibyte-character strings. _mbsicmp現在のマルチバイト コード ページに基づいてマルチバイト文字シーケンスを認識し、返しますするとエラーが発生します。_mbsicmp recognizes multibyte-character sequences according to the current multibyte code page and returns _NLSCMPERROR on an error. 詳細については、「コード ページ」をご覧ください。For more information, see Code Pages. それ以外では、これらの関数の動作は同じです。These three functions behave identically otherwise.

_wcsicmpwcscmpという点以外の動作は同じwcscmpその引数を比較する前に小文字に変換されません。_wcsicmp and wcscmp behave identically except that wcscmp does not convert its arguments to lowercase before comparing them. _mbsicmp_mbscmpという点以外の動作は同じ _mbscmpその引数を比較する前に小文字に変換されません。_mbsicmp and _mbscmp behave identically except that _mbscmp does not convert its arguments to lowercase before comparing them.

呼び出す必要がありますsetlocale、_wsetlocale_wcsicmp Latin 1 文字を使用します。You will need to call setlocale for _wcsicmp to work with Latin 1 characters. 既定では、C ロケールが有効になっているので、たとえば、ä は Ä と等しいと見なされません。The C locale is in effect by default, so, for example, ä will not compare equal to Ä. 呼び出すsetlocale、_wsetlocale呼び出しの前に、C ロケール以外のロケールで _wcsicmpです。Call setlocale with any locale other than the C locale before the call to _wcsicmp. 次のサンプルでどのように _wcsicmpロケールは。The following sample demonstrates how _wcsicmp is sensitive to the locale:

// 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
   printf("\n%d",_wcsicmp(L"ä", L"Ä"));   // compare succeeds

呼び出すには、代わりに_create_locale、_wcreate_localeへのパラメーターとして返されたロケール オブジェクトを渡すと _wcsicmp_lです。An alternative is to call _create_locale, _wcreate_locale and pass the returned locale object as a parameter to _wcsicmp_l.

これらのすべての関数では、パラメーターの検証が行われます。All of these functions validate their parameters. いずれかstring1またはstring2が null ポインターで説明されているとおり、無効なパラメーター ハンドラーが呼び出されますパラメーターの検証です。If either string1 or string2 are null pointers, the invalid parameter handler is invoked, as described in Parameter Validation . これらの関数を返すかどうかは、引き続き実行が許可された、すると設定とerrnoEINVALです。If execution is allowed to continue, these functions return _NLSCMPERROR and set errno to EINVAL.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tcsicmp_tcsicmp _stricmp_stricmp _mbsicmp_mbsicmp _wcsicmp_wcsicmp


ルーチンRoutine 必須ヘッダーRequired header
_stricmp_stricmp_l_stricmp, _stricmp_l <string.h><string.h>
_wcsicmp_wcsicmp_l_wcsicmp, _wcsicmp_l <string.h> または <wchar.h><string.h> or <wchar.h>
_mbsicmp_mbsicmp_l_mbsicmp, _mbsicmp_l <mbstring.h><mbstring.h>

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.


// 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" );
      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" );
      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

関連項目See also

文字列操作String Manipulation
memcmp、wmemcmpmemcmp, wmemcmp
_memicmp、_memicmp_l_memicmp, _memicmp_l
strcmp、wcscmp、_mbscmpstrcmp, wcscmp, _mbscmp
strcoll 系関数strcoll Functions
strncmp、wcsncmp、_mbsncmp、_mbsncmp_lstrncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp、_wcsnicmp、_mbsnicmp、_strnicmp_l、_wcsnicmp_l、_mbsnicmp_l_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr、wcsrchr、_mbsrchr、_mbsrchr_lstrrchr, wcsrchr, _mbsrchr, _mbsrchr_l
_strset、_strset_l、_wcsset、_wcsset_l、_mbsset、_mbsset_l_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l
strspn、wcsspn、_mbsspn、_mbsspn_lstrspn, wcsspn, _mbsspn, _mbsspn_l