分享方式:


strcoll 函式

每個 strcollwcscoll 函式皆會根據目前所用地區設定字碼頁的 LC_COLLATE 類別設定來比較兩個字串。 每個 _mbscoll 函式皆會根據目前所用的多位元組字碼頁來比較兩個字串。 coll如果比較有差異,則當字元集順序與目前代碼頁中的語彙字元順序之間有差異時,請使用函式進行字串比較。 使用對應的 cmp 函式,以便僅測試字串的相等程度。

strcoll 函式

SBCS Unicode MBCS 描述
strcoll wcscoll _mbscoll 比較兩個字串
_stricoll _wcsicoll _mbsicoll 比較兩個字串 (不區分大小寫)
_strncoll _wcsncoll _mbsncoll 比較兩個字串的前 count 個字元
_strnicoll _wcsnicoll _mbsnicoll 比較兩個字串的前 count 個字元 (不區分大小寫)

備註

這些函式 (strcollstricoll_strncoll_strnicoll) 的單一位元組字元 (SBCS) 版本,會根據目前地區設定的 LC_COLLATE 類別設定,以比較 string1string2。 這些函式不同於對應的 strcmp 函式,差異在於 strcoll 函式使用提供比較序列的地區設定字碼頁資訊。 針對字元集順序與字母字元順序 (亦即字母在字典中的順序) 不同的地區設定,若要比較其中的字串,應該使用 strcoll 函式,而不是對應的 strcmp 函式。 如需 的詳細資訊 LC_COLLATE,請參閱 setlocale

針對某些字碼頁和對應的字元集,字元集中的字元順序可能與字母字元順序 (亦即字母在字典中的順序) 不同。 在 「C」 地區設定中,情況並非如此:ASCII 字元集中的字元順序與字元的語彙順序相同。 不過,某些歐洲字碼頁中的字元順序卻不同,例如,字元 'a' (值 0x61) 在字元集中排在字元 'ä' (值 0xE4) 之前,但在詞典編纂上,字元 'a' 卻排在字元 'ä' 之後。 若要執行此類的字母順序比較,請使用 strcoll,而非使用 strcmp。 或者,您可以在原始字串上使用 strxfrm,然後在產生的字串上使用 strcmp

strcollstricoll_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