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


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


C++ 中的strcoll() 函数比较两个空终止字符串。比较基于LC_COLLATE 类别定义的当前语言环境。

strcmp() 对于大多数字符串比较来说已经足够了,但是在处理 unicode 字符时,有时会有某些细微差别导致 byte-to-byte 字符串比较不正确。

例如,如果您要比较西班牙语中的两个字符串,它们可以包含重音字符,如 á、é、í、ó、ú、ü、ñ、¿、¡ 等。

默认情况下,这些重音字符出现在 a、b、c...z 的整个字母表之后。这种比较是错误的,因为 a 的不同重音实际上应该在 b 之前。

strcoll() 使用当前语言环境执行比较,在这种情况下给出更准确的结果。

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

strcoll()原型

int strcoll( const char* lhs, const char* rhs );

strcoll() 函数有两个参数:lhsrhs。它根据LC_COLLATE 类别的当前语言环境比较lhsrhs 的内容。

参数:

  • lhsrhs :指向要比较的空终止字符串的指针。

返回:

strcoll() 函数返回:

  • 如果 lhs 中的第一个不同字符大于 rhs 中的相应字符,则为正值。
  • 如果 lhs 中的第一个不同字符小于 rhs 中的相应字符,则为负值。
  • 如果 lhsrhs 相等,则为 0。

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

#include <cstring>
#include <iostream>
using namespace std;

int main()
{
	char lhs[] = "Armstrong";
	char rhs[] = "Army";
	int result;
	result = strcoll(lhs,rhs);

	cout << "In the current locale ";
	if(result > 0)
		cout << rhs << " precedes " << lhs << endl;
	else if (result < 0)
		cout << lhs << " precedes " << rhs << endl;
	else
		cout << lhs << " and " << rhs << " are same" << endl;
		
	return 0;
}

运行程序时,输出将是:

In the current locale Armstrong precedes Army

相关用法


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