strcoll
関数
各 strcoll
関数と各 wcscoll
関数は、現在使用されているロケールのコード ページの LC_COLLATE
カテゴリ設定に基づいて 2 つの文字列を比較します。 各 _mbscoll
関数は、現在使用されているマルチバイトのコード ページに基づいて、2 つの文字列を比較します。 現在のコード ページで文字セットの順序と辞書文字の順序の間に違いがある場合に、比較に関心がある場合は、文字列比較に coll
関数を使用します。 対応する cmp
関数は、文字列が等しいかをテストする目的でのみ使用します。
strcoll 系関数
SBCS (SBCS) | Unicode | MBCS (MBCS) | 説明 |
---|---|---|---|
strcoll |
wcscoll |
_mbscoll |
2 つの文字列を照合する |
_stricoll |
_wcsicoll |
_mbsicoll |
2 つの文字列を照合する (大文字と小文字を区別しない) |
_strncoll |
_wcsncoll |
_mbsncoll |
2 つの文字列の先頭の count 文字を照合する |
_strnicoll |
_wcsnicoll |
_mbsnicoll |
2 つの文字列の先頭の count 文字を照合する (大文字と小文字を区別しない) |
解説
これらの関数の 1 バイト文字 (SBCS) バージョン (strcoll
、stricoll
、_strncoll
、_strnicoll
) は、現在のロケールの LC_COLLATE
カテゴリ設定に基づいて string1
と string2
を比較します。 これらの関数は、対応する strcmp
関数 (その中の strcoll
関数が照合順序を提供するロケール コード ページ情報を使用する) とは異なります。 文字セット順序と辞書式文字順序が異なるロケールでの文字列比較では、対応する strcmp
関数ではなく strcoll
関数を使用する必要があります。 LC_COLLATE
の詳細については、「setlocale
」を参照してください。
一部のコード ページとそれに対応する文字セットでは、文字セットの文字の順序が辞書式の文字の順序と異なる場合があります。 "C" ロケールでは、大文字と小文字は区別されません。ASCII 文字セット内の文字の順序は、文字の辞書の順序と同じです。 しかし、たとえば、ヨーロッパの一部のコード ページでは、文字 a (値 0x61) は文字セットで文字 'ä' (値 0xE4) の前にありますが、辞書式の順序では文字 'ä' が文字 'a' の前にあります。 このようなインスタンスで、辞書式比較を実行するには、strcmp
ではなく strcoll
を使用します。 あるいは、元の文字列に対して strxfrm
を使用してから、結果の文字列に対して strcmp
を使用できます。
strcoll
、stricoll
、_strncoll
、_strnicoll
では、ワイド文字 (Unicode) の対応関数と同様に、現在使用中のロケールのコード ページに従ってマルチバイト文字の文字列を自動的に処理します。 ただし、これらの関数のマルチバイト (MBCS) バージョンでは、現在使用中のマルチバイトのコード ページに基づいて文字ごとに文字列を照合します。
coll
関数が単に文字列の等価性をテストするのに対して、cmp
関数は比較のために文字列を辞書式に照合するため、coll
関数は cmp
の対応するバージョンよりもかなり低速です。 したがって、 coll
関数は、現在のコード ページで文字セットの順序と辞書文字の順序の間に違いがあり、この違いが文字列比較で重要な場合にのみ使用する必要があります。
関連項目
ロケール
文字列操作
localeconv
_mbsnbcoll
、 _mbsnbcoll_l
、 _mbsnbicoll
、 _mbsnbicoll_l
setlocale
, _wsetlocale
strcmp
、 wcscmp
、 _mbscmp
strncmp
、 wcsncmp
、 _mbsncmp
、 _mbsncmp_l
_strnicmp
、 _wcsnicmp
、 _mbsnicmp
、 _strnicmp_l
、 _wcsnicmp_l
、 _mbsnicmp_l
strxfrm
、 wcsxfrm
、 _strxfrm_l
、 _wcsxfrm_l