strcoll
函式
每個 strcoll
與 wcscoll
函式皆會根據目前所用地區設定字碼頁的 LC_COLLATE
類別設定來比較兩個字串。 每個 _mbscoll
函式皆會根據目前所用的多位元組字碼頁來比較兩個字串。 coll
如果比較有差異,則當字元集順序與目前代碼頁中的語彙字元順序之間有差異時,請使用函式進行字串比較。 使用對應的 cmp
函式,以便僅測試字串的相等程度。
strcoll 函式
SBCS | Unicode | MBCS | 描述 |
---|---|---|---|
strcoll |
wcscoll |
_mbscoll |
比較兩個字串 |
_stricoll |
_wcsicoll |
_mbsicoll |
比較兩個字串 (不區分大小寫) |
_strncoll |
_wcsncoll |
_mbsncoll |
比較兩個字串的前 count 個字元 |
_strnicoll |
_wcsnicoll |
_mbsnicoll |
比較兩個字串的前 count 個字元 (不區分大小寫) |
備註
這些函式 (strcoll
、stricoll
、_strncoll
與 _strnicoll
) 的單一位元組字元 (SBCS) 版本,會根據目前地區設定的 LC_COLLATE
類別設定,以比較 string1
與 string2
。 這些函式不同於對應的 strcmp
函式,差異在於 strcoll
函式使用提供比較序列的地區設定字碼頁資訊。 針對字元集順序與字母字元順序 (亦即字母在字典中的順序) 不同的地區設定,若要比較其中的字串,應該使用 strcoll
函式,而不是對應的 strcmp
函式。 如需 的詳細資訊 LC_COLLATE
,請參閱 setlocale
。
針對某些字碼頁和對應的字元集,字元集中的字元順序可能與字母字元順序 (亦即字母在字典中的順序) 不同。 在 「C」 地區設定中,情況並非如此:ASCII 字元集中的字元順序與字元的語彙順序相同。 不過,某些歐洲字碼頁中的字元順序卻不同,例如,字元 'a' (值 0x61) 在字元集中排在字元 'ä' (值 0xE4) 之前,但在詞典編纂上,字元 'a' 卻排在字元 'ä' 之後。 若要執行此類的字母順序比較,請使用 strcoll
,而非使用 strcmp
。 或者,您可以在原始字串上使用 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