wcsxfrm函数
概要:
#include <wchar.h> size_t wcsxfrm(wchar_t * restrict s1, const wchar_t * restrict s2, size_t n);
描述:
该函数根据当前语言环境的LC_COLLATE类别转换参数s2指向的宽字符串,然后将转换结果存入参数s1指向的数组。
使用wcscmp函数比较两个转换后的宽字符串,将返回一个大于、等于或者小于0的值,该值与使用wcscoll函数比较相同源字符串的结果相同。最多n个宽字符(包括终止空宽字符)存入参数s1指向的数组。如果参数n的值为0,参数s1可以是空指针。如果复制发生在重叠对象之间,函数行为是未定义的。
存储s2指向宽字符串转换结果的数组所需大小可使用以下表达式计算:
1 + wcsxfrm(NULL, s2, 0)
参数:
wchar_t * restrict s1
指向目标数组的指针,结果字符串将存入该数组。
const wchar_t * restrict s2
指向源字符串的指针。
size_t n
最多可以存入参数s1指向数组的宽字符数。
返回值:
函数返回转换后宽字符串的长度,但不包括终止空宽字符。如果返回值大于等于参数n,参数s1指向数组的内容是不确定的。
范例:
|
|
输出:
转换前:
wcscmp: 南京 大于 上海。
wcscoll: 南京 小于 上海。
转换后:
wcscmp: 南京 小于 上海。
注:使用Visual Studio编译。
由于Visual Studio编译器不支持变长数组,所以这里使用内存管理函数calloc分配内存,存储转换后的宽字符串。
相关内容:
wmemcmp | 比较内存区域宽字符序列的函数。 |
wcscmp | 比较宽字符串的函数。 |
wcscoll | 比较宽字符串的函数。 |
wcsncmp | 比较宽字符串前n个宽字符的函数。 |