C++ 中的wcsxfrm() 函数将给定的空终止宽字符串转换为实现定义的形式。
wcsxfrm() 函数转换宽字符串,以便使用 wcscmp() 函数比较两个转换后的宽字符串产生与在当前 C 语言环境中使用 wcscoll() 函数比较原始宽字符串相同的结果。
例如,x 和 y 是两个宽字符串。 a 和 b 是两个宽字符串,分别使用 wcsxfrm 函数对 x 和 y 进行变换。
然后,
wcscmp(a,b) = wcscoll(x,y)
它在<cwchar> 头文件中定义。
wcsxfrm()原型
size_t wcsxfrm( wchar_t* dest, const wchar_t* src, size_t count );
wcsxfrm() 函数将 src
指向的宽字符串的第一个 count
宽字符转换为实现定义的形式,并将结果存储在 dest
指向的内存位置。
在以下情况下,此函数的行为未定义:
- dest 的大小小于所需的大小。
- dest 和 src 重叠。
参数:
dest
:指向存储转换后的宽字符串的数组的指针。src
:指向要转换的空终止宽字符串的指针。count
:要转换的最大宽字符数。
返回:
wcsxfrm() 函数返回转换的宽字符数,不包括终止的空宽字符 L'\0'。
示例:wcsxfrm() 函数如何工作?
#include <cwchar>
#include <clocale>
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_COLLATE, "cs_CZ.UTF-8");
const wchar_t* s1 = L"\u0068\u0072\u006e\u0065\u0063";
const wchar_t* s2 = L"\u0063\u0068\u0072\u0074";
wchar_t t1[20], t2[20];
cout << "wcscoll returned " << wcscoll(s1,s2) << endl;
cout << "Before transformation, " << "wcscmp returned " << wcscmp(s1,s2) << endl;
wcsxfrm(t1,s1,10);
wcsxfrm(t2,s2,10);
cout << "After transformation, " << "wcscmp returned " << wcscmp(t1,t2) << endl;
return 0;
}
运行程序时,输出将是:
wcscoll returned -1 Before transformation, wcscmp returned 1 After transformation, wcscmp returned -1
相关用法
- C++ wcstold()用法及代码示例
- C++ wcsftime()用法及代码示例
- C++ wcstod()用法及代码示例
- C++ wcscspn()用法及代码示例
- C++ wcsncmp()用法及代码示例
- C++ wcstok()用法及代码示例
- C++ wcsstr()用法及代码示例
- C++ wcsrchr()用法及代码示例
- C++ wcsncpy()用法及代码示例
- C++ wcslen()用法及代码示例
- C++ wcsspn()用法及代码示例
- C++ wcschr()用法及代码示例
- C++ wcstof()用法及代码示例
- C++ wcstol()用法及代码示例
- C++ wcspbrk()用法及代码示例
- C++ wcscat()用法及代码示例
- C++ wcscoll()用法及代码示例
- C++ wcsncat()用法及代码示例
- C++ wcscpy()用法及代码示例
- C++ wcscmp()用法及代码示例
注:本文由纯净天空筛选整理自 C++ wcsxfrm()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。