次の方法で共有


_mbsnbcoll_mbsnbcoll_l_mbsnbicoll_mbsnbicoll_l

マルチバイト コード ページの情報を使用して、2 つのマルチバイト文字列の n バイトを比較します。

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。

構文

int _mbsnbcoll(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count
);
int _mbsnbcoll_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count,
   _locale_t locale
);
int _mbsnbicoll(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count
);
int _mbsnbicoll_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count,
   _locale_t locale
);

パラメーター

string1, string2
比較する文字列。

count
比較するバイト数。

locale
使用するロケール。

戻り値

戻り値は string1string2の部分文字列の関係を示します。

戻り値 説明
< 0 string1 の部分文字列が string2 の部分文字列より小さい。
0 string1 の部分文字列は string2 の部分文字列と同じ。
> 0 string1 の部分文字列が string2 の部分文字列より大きい。

string1またはstring2NULLまたはcountINT_MAXより大きい場合は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、これらの関数は _NLSCMPERROR を返し、errnoEINVAL に設定します。 _NLSCMPERROR を使用するには、String.h または Mbstring.h をインクルードします。

解説

これらの関数は、最長で countstring1 の先頭 string2 バイトを比較し、得られた string1 の部分文字列と string2 の部分文字列の関係を示す値を返します。 string1またはstring2の部分文字列の最後のバイトが先頭バイトの場合、比較には含まれません。これらの関数は、部分文字列の完全な文字のみを比較します。 _mbsnbicoll_mbsnbcoll の大文字と小文字を区別しないバージョンです。 _mbsnbcmp_mbsnbicmp のように、_mbsnbcoll_mbsnbicoll は、現在使用中のマルチバイト コード ページで指定された辞書式の順序に従って 2 個のマルチバイト文字列を照合します。

一部のコード ページおよびそれに対応する文字セットでは、文字セットの文字の順序が辞書式の順序と異なる場合があります。 "C" ロケールでは、ASCII 文字セット内の文字の順序は、文字の辞書順と同じです。 しかし、たとえば、ヨーロッパの一部のコード ページでは、文字 a (値 0x61) は文字セットで文字 'ä' (値 0xE4) の前にありますが、辞書式の順序では文字 'ä' が文字 'a' の前にあります。 このような場合にバイトの文字列の辞書式の比較を実行するには、_mbsnbcoll ではなく _mbsnbcmp を使用してください。文字列の等価性のみを検証するには、_mbsnbcmp を使用します。

coll 関数が単に文字列の等価性をテストするのに対して、cmp 関数は比較のために文字列を辞書式に照合するため、coll 関数は cmp の対応するバージョンよりもかなり低速です。 したがって、 coll 関数は、現在のコード ページで文字セットの順序と辞書文字の順序に違いがあり、この違いが比較対象である場合にのみ使用する必要があります。

出力値は、ロケールの LC_CTYPE カテゴリ設定の設定によって影響を受けます。 詳細については、setlocaleを参照してください。 _l サフィックスが付いていないこれらの関数のバージョンでは、このロケールに依存する動作に現在のロケールを使用します。_l サフィックスが付いているバージョンは、渡されたロケール パラメーターを代わりに使用する点を除いて同じです。 詳細については、「 Locale」を参照してください。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。

汎用テキスト ルーチンのマップ

Tchar.h のルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tcsncoll _strncoll _mbsnbcoll _wcsncoll
_tcsncoll_l _strncoll_l _mbsnbcoll_l _wcsncoll_l
_tcsnicoll _strnicoll _mbsnbicoll _wcsnicoll
_tcsnicoll_l _strnicoll_l _mbsnbicoll_l _wcsnicoll_l

要件

ルーチンによって返される値 必須ヘッダー
_mbsnbcoll <mbstring.h>
_mbsnbcoll_l <mbstring.h>
_mbsnbicoll <mbstring.h>
_mbsnbicoll_l <mbstring.h>

互換性の詳細については、「 Compatibility」を参照してください。

関連項目

文字列操作
_mbsnbcat, _mbsnbcat_l
_mbsnbcmp, _mbsnbcmp_l
_mbsnbicmp, _mbsnbicmp_l
strcoll 関数
strncmpwcsncmp_mbsncmp_mbsncmp_l
_strnicmp_wcsnicmp_mbsnicmp_strnicmp_l_wcsnicmp_l_mbsnicmp_l