当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ strxfrm()用法及代码示例


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 指向的内存位置。

在以下情况下,此函数的行为未定义:

  • dest 的大小小于所需大小。
  • destsrc 重叠。

它在<cstring> 头文件中定义。

参数:

  • dest:指向存储转换字符串的数组的指针。
  • src:指向要转换的空终止字符串的指针。
  • count :要转换的最大字符数。

返回:

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

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

#include <iostream>
#include <cstring>
#include <clocale>
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

相关用法


注:本文由纯净天空筛选整理自 C++ strxfrm()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。