# std::wcscoll

< cpp‎ | string‎ | wide

定义于头文件 `<cwchar>` |  |
int wcscoll( const wchar_t* lhs, const wchar_t* rhs ); |  |

按照最近通过 std::setlocale 安装的， LC_COLLATE 类别所定义的本地环境比较二个空终止宽字符串。

### 参数

lhs, rhs | - | 指向要比较的空终止宽字符串的指针

### 返回值

若 `lhs` 小于（前趋） `rhs` 则为负值。

若 `lhs` 等于 `rhs` 则为 ​0​ 。

若 `lhs` 大于（后随） `rhs` 则为负值。

### 注意

对照顺序为字典顺序：国家字母表（其等价类）中字母的位置拥有高于其大小写或变体的优先级。在等价类内，小写字符先于其大写等价物对照，而且本地环境限定的顺序可能应用到有发音符号的字符。一些本地环境中，字符组作为单个对照单元比较。例如， "ch" 在捷克语中后随 "h" 而前趋 "i" ， "dzs" 在匈牙利语中后随 "dz" 而前趋 "g" 。

### 示例

    #include <iostream>
    #include <clocale>

    void try_compare(const wchar_t* p1, const wchar_t* p2)
    {
        if(std::wcscoll(p1, p2) < 0)
             std::wcout << p1 << " before " << p2 << '\n';
        else
             std::wcout << p2 << " before " << p1 << '\n';
    }

    int main()
    {
        std::setlocale(LC_ALL, "en_US.utf8");
        std::wcout << "In the American locale: ";
        try_compare(L"hrnec", L"chrt");

        std::setlocale(LC_COLLATE, "cs_CZ.utf8");
        std::wcout << "In the Czech locale: ";
        try_compare(L"hrnec", L"chrt");

        std::setlocale(LC_COLLATE, "en_US.utf8");
        std::wcout << "In the American locale: ";
        try_compare(L"år", L"ängel");

        std::setlocale(LC_COLLATE, "sv_SE.utf8");
        std::wcout << "In the Swedish locale: ";
        try_compare(L"år", L"ängel");
    }

输出：

    In the American locale: chrt before hrnec
    In the Czech locale: hrnec before chrt
    In the American locale: ängel before år
    In the Swedish locale: år before ängel

### 参阅

strcoll | 按照当前本地环境比较两个字符串 (函数)
do_compare [虚] | 用此平面的对照规则比较二个字符串 (`std::collate<CharT>` 的虚受保护成员函数)
wcsxfrm | 变换宽字符串，使得 wcscmp 会产生与 wsccoll 相同的结果 (函数)