strcoll 系関数
strcoll 系関数と wcscoll 系関数は、現在使用中のロケール コード ページの LC_COLLATE カテゴリ設定に基づいて、2 つの文字列を比較します。 _mbscoll 系関数は、現在使用中のマルチバイト コード ページに基づいて、2 つの文字列を比較します。 現在のコード ページで文字セットの文字順と辞書式の文字順が異なり、その違いが文字列を比較するときに問題になる場合は、coll 系関数を使用します。 単に文字列が等値かどうかを調べるには、対応する cmp 系関数を使用します。
strcoll 系関数
SBCS |
Unicode |
MBCS |
説明 |
---|---|---|---|
2 つの文字列を照合します。 |
|||
2 つの文字列を照合します。大文字と小文字は区別しません。 |
|||
2 つの文字列の最初の count 文字数を照合します。 |
|||
2 つの文字列の最初の count 文字数を照合します。大文字と小文字は区別しません。 |
解説
これらの関数のシングルバイト文字 (SBCS) バージョン (strcoll、stricoll、_strncoll、および _strnicoll) は、現在のロケールの LC_COLLATE カテゴリの設定に基づいて string1 と string2 を比較します。 これらの strcoll 系関数は、対応する strcmp 系関数とは異なり、照合順序を指定するロケール コード ページ情報を使用します。 文字セットの文字の順序と辞書式の文字の順序が異なるロケールで文字列を比較する場合は、対応する strcmp 系関数ではなく strcoll 系関数を使用する必要があります。 LC_COLLATE の詳細については、「setlocale、_wsetlocale」を参照してください。
一部のコード ページとその文字セットでは、文字セットの文字の順序が辞書式の文字の順序と異なることがあります。 「C」ロケールでは、このケースではないです。ASCII 文字セットの順序では、文字の辞書式の順序と同じです。 ただし、あるヨーロッパのコード ページでは、文字 a (値 0x61) は文字セットで文字 'ä' (値 0xE4) の前にありますが、辞書式の順序では 'ä' が 'a' の前にあります。 このような場合に辞書式の比較を行うには、strcmp 関数ではなく strcoll 関数を使用します。 また、元の文字列で strxfrm 関数を使用してから、結果の文字列で strcmp 関数を使用することもできます。
strcoll、stricoll、_strncoll、および _strnicoll の各関数は、ワイド文字 (Unicode) バージョンの場合と同様に、現在使用中のロケール コード ページに基づいて、マルチバイト文字列を自動的に処理します。 ただし、これらの関数のマルチバイト文字 (MBCS) バージョンは、現在使用中のマルチバイト コード ページに基づいて、文字列を 1 文字ずつ照合します。
cmp 系関数は文字列の等値性のみを調べますが、coll 系関数は辞書式に文字列を照合して比較します。このため、coll 系関数では、対応する cmp 系関数より処理に時間がかかります。 現在のコード ページで文字セットの文字順と辞書式の文字順が異なり、その違いが文字列を比較するときに問題になる場合にだけ、coll 系関数を使用してください。
参照
参照
_mbsnbcoll、_mbsnbcoll_l、_mbsnbicoll、_mbsnbicoll_l
strncmp、wcsncmp、_mbsncmp、_mbsncmp_l
_strnicmp、_wcsnicmp、_mbsnicmp、_strnicmp_l、_wcsnicmp_l、_mbsnicmp_l