_mbsnbcoll、_mbsnbcoll_l、_mbsnbicoll、_mbsnbicoll_l
マルチバイト コード ページ情報を使用して、2 つのマルチバイト文字列の n バイトを比較します。
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 をインクルードします。
解説
これらの関数は、string1 と string2 の最初の count バイトまでを照合し、string1 と string2 の部分文字列の関係を示す値を返します。 string1 または string2 の部分文字列の最後のバイトが先行バイトの場合、そのバイトは比較の対象には含まれません。これらの関数は、部分文字列内の完全な文字だけを比較します。 _mbsnbicoll 関数は、_mbsnbcoll 関数の大文字小文字を区別しないバージョンです。 _mbsnbcmp 関数と _mbsnbicmp 関数と同様に、_mbsnbcoll 関数と _mbsnbicoll 関数は、使用中のマルチバイト コード ページで指定された辞書式の順序で、2 つのマルチバイト文字列を照合します。
一部のコード ページとその文字セットでは、文字セットの文字の順序が辞書式の文字の順序と異なることがあります。 「C」ロケールでは、このケースではないです。ASCII 文字セットの順序では、文字の辞書式の順序と同じです。 ただし、あるヨーロッパのコード ページでは、文字 a (値 0x61) は文字セットで文字 'ä' (値 0xE4) の前にありますが、辞書式の順序では 'ä' が 'a' の前にあります。 この場合に、文字列のバイトを辞書式の順序で比較するには、_mbsnbcmp 関数ではなく _mbsnbcoll 関数を使用します。文字列が等しいかどうかだけを調べるには、_mbsnbcmp 関数を使用します。
cmp 系関数は文字列の等値性のみを調べますが、coll 系関数は辞書式に文字列を照合して比較します。このため、coll 系関数では、対応する cmp 系関数より処理に時間がかかります。 したがって、現在のコード ページで文字セットの文字順と辞書式の文字順が異なり、その違いが文字列を比較するときに問題になる場合にだけ、coll 系関数を使用してください。
出力値は、ロケールの LC_CTYPE カテゴリの設定で決まります。詳細については、「setlocale」を参照してください。 _l サフィックスが付いていないこの関数のバージョンでは、現在のロケールを使用してロケールに依存する動作を行います。_l サフィックスが付いているバージョンは、渡されたロケール パラメーターを代わりに使用する点を除いて同じです。 詳細については、「ロケール」を参照してください。
汎用テキスト ルーチンのマップ
Tchar.h のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_tcsncoll |
_mbsnbcoll |
||
_tcsncoll_l |
_strncoll、_wcsncoll、_mbsncoll、_strncoll_l、_wcsncoll_l、_mbsncoll_l |
_mbsnbcoll_l |
|
_tcsnicoll |
_mbsnbicoll |
||
_tcsnicoll_l |
_mbsnbicoll_l |
必要条件
ルーチン |
必須ヘッダー |
---|---|
_mbsnbcoll |
<mbstring.h> |
_mbsnbcoll_l |
<mbstring.h> |
_mbsnbicoll |
<mbstring.h> |
_mbsnbicoll_l |
<mbstring.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
参照
参照
strncmp、wcsncmp、_mbsncmp、_mbsncmp_l
_strnicmp、_wcsnicmp、_mbsnicmp、_strnicmp_l、_wcsnicmp_l、_mbsnicmp_l