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不同之處在於,它會使用傳遞中而不是目前的地區設定的地區設定,則是完全相同。 如需詳細資訊,請參閱 地區設定。
在轉換時,呼叫後strcmp與兩個轉換後的字串會產生完全相同的呼叫的結果strcoll套用至原始的兩個字串。 如同strcoll和stricoll, strxfrm會自動處理適當的多位元組字元字串。
wcsxfrm寬字元版本的strxfrm。 字串引數的wcsxfrm是寬字元的指標。 對於wcsxfrm、 後續字串轉換的呼叫wcscmp與兩個轉換後的字串會產生完全相同的呼叫的結果wcscoll套用至原始的兩個字串。 wcsxfrm與strxfrm其他方式完全相同。 wcsxfrm使用目前的地區設定的地區設定相關的行為。 _wcsxfrm_l使用傳遞中而不是目前的地區設定的地區設定。
這些函式會驗證它們的參數。 如果strSource是空值的指標,或strDest是 NULL 指標 (除非計數是零),或者如果count大於INT_MAX,不正確的參數處理常式會叫用,如所述參數驗證 。 如果執行,則允許繼續執行,這些函式會設定errno到EINVAL ,並傳回INT_MAX。
泛用文字常式對應
TCHAR。H 常式 |
_UNICODE & 未定義的 _MBCS |
定義的 _MBCS |
定義 _unicode 之後 |
---|---|---|---|
_tcsxfrm |
strxfrm |
strxfrm |
wcsxfrm |
_tcsxfrm_l |
_strxfrm_l |
_strxfrm_l |
_wcsxfrm_l |
"C"地區設定中,在中的字元順序的字集 (ASCII 字元集) 等同於 lexicographic 字元的順序。 不過,其他地區設定中的字元組中的字元順序可能不同於 lexicographic 的字元順序。 比方說,某些歐洲地區設定中的字元 'a' (值 0x61) 之前的字元 ' & # x00E4;'(值 0xE4) 中的字元集,但字元 'ä' 之前的字元 'a' 您。
在 [地區設定中的字集和 lexicographic 的字元順序不同,使用strxfrm對原始字串,然後strcmp上產生的字串,以產生某個 lexicographic 的字串比較會根據目前的地區設定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> |
其他的相容性資訊,請參閱相容性在簡介中。
.NET Framework 對等用法
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。