当前位置: C语言 -- 标准库 -- <wchar.h> -- wcscoll

wcscoll函数


概要:
#include <wchar.h>
int wcscoll(const wchar_t *s1, const wchar_t *s2);

描述:

该函数根据当前语言环境LC_COLLATE类别定义的排序顺序比较参数s1指向宽字符串和参数s2指向宽字符串的大小。

每种语言都有一套规则规定:如何将字符串排序到有序列表中。排序规则是指如何确定字符串的排序顺序。排序规则是字典顺序。当前语言环境的LC_COLLATE类别提供了排序规则的定义。

标准"C"语言环境中,字符集顺序和字典编纂字符顺序相同,这种情况下对于相同的宽字符串调用wcscoll函数与调用wcscmp函数的结果相同。

有些语言环境中,字符集顺序和字典编纂字符顺序存在差异,这种情况下对于相同的宽字符串调用wcscoll函数与调用wcscmp函数的结果可能存在差异。这种情况下如果要执行按字典顺序比较,应使用wcscoll函数。

具体实现中,wcscoll函数可能会隐式地将宽字符串中的宽字符映射为宽字符序列(该宽字符序列表示宽字符串在当前语言环境排序序列中的位置。),然后比较宽字符序列。


参数:
const wchar_t *s1

指向宽字符串的指针。

const wchar_t *s2

指向宽字符串的指针。


返回值:

根据参数s1指向宽字符串是大于、等于还是小于参数s2指向宽字符串,函数返回一个大于、等于或者小于0的整数。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
/*函数wcscoll范例*/

#include <locale.h>
#include <wchar.h>

void compareString(const wchar_t *wStrOne, const wchar_t *wStrTwo)
{
    int value;

    value = wcscoll(wStrOne, wStrTwo);
    if(value>0)
        wprintf(L"%ls大于%ls。\n", wStrOne, wStrTwo);
    else if(value<0)
        wprintf(L"%ls小于%ls。\n", wStrOne, wStrTwo);
    else
        wprintf(L"%ls等于%ls。\n", wStrOne, wStrTwo);
}

int main(void)
{
    setlocale(LC_ALL, "");
    
    const wchar_t strOne[] = L"南京";
    const wchar_t strTwo[] = L"上海";

    compareString(strOne, strTwo);

    return 0;
}


输出:

南京小于上海。

注:使用Visual Studio编译。


相关内容:
wmemcmp 比较内存区域宽字符序列的函数。
wcscmp 比较宽字符串的函数。
wcsncmp 比较宽字符串前n个宽字符的函数。
wcsxfrm 转换宽字符串的函数。