strxfrm
、 、 wcsxfrm
、 _strxfrm_l
_wcsxfrm_l
根據地區設定特定資訊轉換字串。
語法
size_t strxfrm(
char *strDest,
const char *strSource,
size_t count
);
size_t wcsxfrm(
wchar_t *strDest,
const wchar_t *strSource,
size_t count
);
size_t _strxfrm_l(
char *strDest,
const char *strSource,
size_t count,
_locale_t locale
);
size_t wcsxfrm_l(
wchar_t *strDest,
const wchar_t *strSource,
size_t count,
_locale_t locale
);
參數
strDest
目的字串。
strSource
來源字串。
count
中要放置 strDest
的最大字元數。
locale
要使用的地區設定。
傳回值
傳回已轉換字串的長度,不計入結束的 Null 字元。 如果傳回值大於或等於 count
,則無法預測 strDest
的內容。 發生錯誤時,每個函式會設定 errno
,並傳回 INT_MAX
。 對於無效的字元,errno
會設定為 EILSEQ
。
備註
strxfrm
函式將由 strSource
指向的字串轉換成新的定序格式,其儲存在 strDest
。 轉換並放入結果字串的字元數不會超過 count
個字元,包括 Null 字元。 轉換是使用地區設定的 LC_COLLATE
分類設定進行。 如需 的詳細資訊 LC_COLLATE
,請參閱 setlocale
。 strxfrm
會針對與其地區設定相關的行為使用目前的地區設定;_strxfrm_l
與其相同,只不過它會使用傳入的地區設定,而不是目前的地區設定。 如需詳細資訊,請參閱 Locale。
轉換之後,使用兩個轉換字串的呼叫 strcmp
會產生與套用至原始兩個字元串之呼叫 strcoll
的結果完全相同的結果。 如同 strcoll
和 stricoll
,strxfrm
會自動適當地處理多位元組字元字串。
wcsxfrm
是寬字元版本的 strxfrm
;wcsxfrm
的字串引數是寬字元指標。 針對 wcsxfrm
,在字串轉換之後,對 具有兩個已轉換字串的呼叫 wcscmp
會產生與套用至原始兩個字串之呼叫 wcscoll
的結果完全相同的結果。 否則,wcsxfrm
和 strxfrm
的行為即會相同。 wcsxfrm
會針對與其地區設定相關的行為使用目前的地區設定;_wcsxfrm_l
使用傳入的地區設定,而不是目前的地區設定。
這些函式會驗證它們的參數。 如果 strSource
是 null 指標,或 strDest
是NULL
指標(除非 count 為零),或count
如果 大於 INT_MAX
,則會叫用無效的參數處理程式,如參數驗證中所述。 如果允許繼續執行,這些函式會將 errno
設為 EINVAL
,並傳回 INT_MAX
。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
一般文字常式對應
TCHAR.H 常式 | _UNICODE 和 _MBCS 未定義 |
_MBCS 已定義 |
_UNICODE 已定義 |
---|---|---|---|
_tcsxfrm |
strxfrm |
strxfrm |
wcsxfrm |
_tcsxfrm_l |
_strxfrm_l |
_strxfrm_l |
_wcsxfrm_l |
在 "C" 地區設定中,字元集 (ASCII 字元集) 的字元順序與字元的詞典編纂順序相同。 不過,其他地區設定中,字元集的字元順序可能與詞典編纂字元順序不同。 例如,在特定歐洲地區設定中,字元 'a' (value 0x61) 在字元 'ä' 之前字元集中的 (value 0xE4),但字元 'ä' 在字元 'a' 語彙上之前。
在字元集和詞典編纂字元順序不同的地區設定,請對原始字串使用 strxfrm
,然後對產生的字串使用 strcmp
,以產生根據目前地區設定之 LC_COLLATE
分類設定的詞典編纂字串比較。 如此,若要依詞典編纂順序比較上述地區設定中的兩個字串,請對原始字串使用 strxfrm
,然後對產生的字串使用 strcmp
。 或者,您可以對原始字串使用 strcoll
而不是 strcmp
。
strxfrm
基本上是 搭配的LCMapString
LCMAP_SORTKEY
包裝函式。
下列運算式的值,是用來儲存來源字串之 strxfrm
轉換所需的陣列大小︰
1 + strxfrm( NULL, string, 0 )
僅在 「C」 地區設定中, strxfrm
相當於下列函式呼叫:
strncpy( _string1, _string2, _count );
return( strlen( _string1 ) );
需求
常式 | 必要的標頭 |
---|---|
strxfrm |
<string.h> |
wcsxfrm |
<string.h> 或 <wchar.h> |
_strxfrm_l |
<string.h> |
_wcsxfrm_l |
<string.h> 或 <wchar.h> |
如需相容性詳細資訊,請參閱相容性。
另請參閱
資料轉換
localeconv
setlocale
, _wsetlocale
地區設定
字串操作
strcoll
函數
strcmp
、 、 wcscmp
_mbscmp
strncmp
、 、 wcsncmp
、 _mbsncmp
_mbsncmp_l