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() 函数有两个参数:lhs
和 rhs
。它根据LC_COLLATE 类别的当前语言环境比较lhs
和rhs
的内容。
参数:
lhs
和rhs
:指向要比较的空终止字符串的指针。
返回:
strcoll() 函数返回:
- 如果
lhs
中的第一个不同字符大于rhs
中的相应字符,则为正值。 - 如果
lhs
中的第一个不同字符小于rhs
中的相应字符,则为负值。 - 如果
lhs
和rhs
相等,则为 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()用法及代码示例
- C++ strchr()用法及代码示例
- C++ strcat()用法及代码示例
- C++ strcat() vs strncat()用法及代码示例
- C++ strcmp()用法及代码示例
- C++ strcspn()用法及代码示例
- C++ strcpy()用法及代码示例
- C++ string::length()用法及代码示例
- C++ string::npos用法及代码示例
- C++ strncat()用法及代码示例
- C++ strstr()用法及代码示例
- C++ strtok()用法及代码示例
- C++ strtod()用法及代码示例
- C++ strtoimax()用法及代码示例
- C++ strpbrk()用法及代码示例
- C++ strxfrm()用法及代码示例
- C++ strspn()用法及代码示例
- C++ strncmp()用法及代码示例
- C++ strtoull()用法及代码示例
- C++ string at()用法及代码示例
注:本文由纯净天空筛选整理自 C++ strcoll()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。