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
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應