_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
使用するロケール。
戻り値
戻り値は string1
と string2
の部分文字列の関係を示します。
戻り値 | 説明 |
---|---|
< 0 | string1 の部分文字列が string2 の部分文字列より小さい。 |
0 | string1 の部分文字列は string2 の部分文字列と同じ。 |
> 0 | string1 の部分文字列が string2 の部分文字列より大きい。 |
string1
またはstring2
がNULL
またはcount
がINT_MAX
より大きい場合は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、これらの関数は _NLSCMPERROR
を返し、errno
を EINVAL
に設定します。 _NLSCMPERROR
を使用するには、String.h または Mbstring.h をインクルードします。
解説
これらの関数は、最長で count
と string1
の先頭 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
関数
strncmp
、 wcsncmp
、 _mbsncmp
、 _mbsncmp_l
_strnicmp
、 _wcsnicmp
、 _mbsnicmp
、 _strnicmp_l
、 _wcsnicmp_l
、 _mbsnicmp_l