📜  C++ strxfrm()

📅  最后修改于: 2020-09-25 09:17:14             🧑  作者: Mango

C++中的strxfrm() 函数将给定的空终止字节字符串转换为实现定义的形式。

此strxfrm() 函数对字符串进行转换,以便使用strcmp() 函数比较两个转换后的字符串产生的结果与在当前C语言环境中使用strcoll() 函数比较原始字符串产生的结果相同。

例如,x和y是两个字符串 。 a和b是通过使用strxfrm 函数分别转换x和y形成的两个字符串 。然后,对strcmp(a,b)的调用与对strcoll(x,y)的调用相同。

strxfrm()原型

size_t strxfrm(char* dest, const char* src, size_t count);

strxfrm() 函数将src指向的字符串的第一个count 字符转换为实现定义的形式,并将结果存储在dest指向的内存位置。

在以下情况下,此函数的行为是不确定的:

它在头文件中定义。

strxfrm()参数

strxfrm()返回值

strxfrm() 函数返回转换后的字符数,不包括终止的空字符 '\ 0'。

示例:strxfrm() 函数如何工作?

#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