Share via


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,請參閱 setlocalestrxfrm 會針對與其地區設定相關的行為使用目前的地區設定;_strxfrm_l 與其相同,只不過它會使用傳入的地區設定,而不是目前的地區設定。 如需詳細資訊,請參閱 Locale

轉換之後,使用兩個轉換字串的呼叫 strcmp 會產生與套用至原始兩個字元串之呼叫 strcoll 的結果完全相同的結果。 如同 strcollstricollstrxfrm 會自動適當地處理多位元組字元字串。

wcsxfrm 是寬字元版本的 strxfrmwcsxfrm 的字串引數是寬字元指標。 針對 wcsxfrm,在字串轉換之後,對 具有兩個已轉換字串的呼叫 wcscmp 會產生與套用至原始兩個字串之呼叫 wcscoll 的結果完全相同的結果。 否則,wcsxfrmstrxfrm 的行為即會相同。 wcsxfrm 會針對與其地區設定相關的行為使用目前的地區設定;_wcsxfrm_l 使用傳入的地區設定,而不是目前的地區設定。

這些函式會驗證它們的參數。 如果 strSource 是 null 指標,或 strDestNULL指標(除非 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基本上是 搭配的LCMapStringLCMAP_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