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。有关更多信息,请参见 平台调用示例。