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 是 null 指针,或者 strDest 是 null 指针 (除非计数为零),或者,如果 count 比 INT_MAX大,无效参数调用处理程序,如 参数验证 所述。 如果执行允许继续,对 EINVAL 的这些功能集 errno 和返回 INT_MAX。

一般文本例程映射

TCHAR.H 实例

未定义的 _UNICODE _MBCS

定义的 _MBCS

定义的 _UNICODE

_tcsxfrm

strxfrm

strxfrm

wcsxfrm

_tcsxfrm_l

_strxfrm_l

_strxfrm_l

_wcsxfrm_l

在 “C”区域设置,字符的顺序在该字符集 (ASCII 字符集) 的与字符的字典顺序。 但是,在其他区域设置,字符顺序在该字符集的能与字典字符顺序不同。 例如,在某些欧洲区域设置,字符 " a " (值 0x61) 位于字符 “ #x00E4; ” (值 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

有关其他的兼容性信息,请参见中介绍的 兼容性

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例

请参见

参考

数据转换

localeconv

setlocale, _wsetlocale

区域设置

字符串操作(crt)

strcoll功能

strcmp, wcscmp, _mbscmp

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l