C

strcoll

strcoll

在头文件中定义
int strcoll(const char * lhs,const char * rhs);

根据LC_COLLATE类别定义的当前语言环境比较两个以null结尾的字节字符串。

参数

lhs,rhs-指向以空字符结尾的字节字符串进行比较的指针

返回值

如果lhs小于(之前)rhs,则为负值。

如果lhs等于rhs,则返回0。

如果lhs大于(接下来)rhs,则为正值。

注意

整理顺序是字典顺序:字母表(其等价类)中字母的位置比其案例或变体具有更高的优先级。 在等价类中,小写字母在其大写等价和特定于语言环境的顺序可能适用于带有变音符的字符之前进行整理。 在某些语言环境中,字符组会作为单个归类单位进行比较。 例如,捷克语中的“ch”跟在“h”之后,在“i”之前,匈牙利语中的“dzs”跟在“dz”之后并且在“g”之前。

#include <stdio.h> #include <string.h> #include <locale.h> int main(void) { setlocale(LC_COLLATE, "cs_CZ.iso88592" const char* s1 = "hrnec"; const char* s2 = "chrt"; printf("In the Czech locale: " if(strcoll(s1, s2) < 0) printf("%s before %s\n", s1, s2 else printf("%s before %s\n", s2, s1 printf("In lexicographical comparison: " if(strcmp(s1, s2) < 0) printf("%s before %s\n", s1, s2 else printf("%s before %s\n", s2, s1 }

输出:

In the Czech locale: hrnec before chrt In lexicographical comparison: chrt before hrnec

参考

  • C11标准(ISO / IEC 9899:2011):

扩展内容

wcscoll(C95)根据当前语言环境(函数)比较两个宽字符串
strxfrm转换一个字符串,以便strcmp产生与strcoll(function)相同的结果
wcsxfrm(C95)转换宽字符串以使wcscmp产生与wcscoll(函数)相同的结果
STRCMP比较两个字符串(功能)

| strcoll的C ++文档 |