📅  最后修改于: 2020-09-25 09:17:14             🧑  作者: Mango
此strxfrm() 函数对字符串进行转换,以便使用strcmp() 函数比较两个转换后的字符串产生的结果与在当前C语言环境中使用strcoll() 函数比较原始字符串产生的结果相同。
例如,x和y是两个字符串 。 a和b是通过使用strxfrm 函数分别转换x和y形成的两个字符串 。然后,对strcmp(a,b)的调用与对strcoll(x,y)的调用相同。
size_t strxfrm(char* dest, const char* src, size_t count);
strxfrm() 函数将src
指向的字符串的第一个count
字符转换为实现定义的形式,并将结果存储在dest
指向的内存位置。
在以下情况下,此函数的行为是不确定的:
它在
strxfrm() 函数返回转换后的字符数,不包括终止的空字符 '\ 0'。
#include
#include
#include
using namespace std;
int main()
{
setlocale(LC_COLLATE, "cs_CZ.UTF-8");
const char* s1 = "hrnec";
const char* s2 = "chrt";
char t1[20], t2[20];
cout << "strcoll returned " << strcoll(s1,s2) << endl;
cout << "Before transformation, " << "strcmp returned " << strcmp(s1,s2) << endl;
strxfrm(t1,s1,10);
strxfrm(t2,s2,10);
cout << "After transformation, " << "strcmp returned " << strcmp(t1,t2) << endl;
return 0;
}
运行该程序时,输出为:
strcoll returned -1
Before transformation, strcmp returned 1
After transformation, strcmp returned -1