# std::wcsncmp

< cpp‎ | string‎ | wide

定义于头文件 `<cwchar>` |  |
int wcsncmp( const wchar_t* lhs, const wchar_t* rhs, std::size_t count ); |  |

比较二个空终止宽字符串的至多 `count` 个字符。按字典序进行比较。

结果的符号是被比较的字符串中首对宽字符的值间的差的符号。

若 `lhs` 或 `rhs` 不是指向空终止字符串的指针则行为未定义。

### 参数

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

### 返回值

若字典序中 `lhs` 先出现于 `rhs` 则为负值。

若 `lhs` 与 `rhs` 比较相等，或若 count 为零，则为零。

若字典序中 `lhs` 后出现于 `rhs` 则为负值。

### 示例

    #include <iostream>
    #include <cwchar>
    #include <clocale>
    #include <locale>

    void demo(const wchar_t* lhs, const wchar_t* rhs, int sz)
    {
        int rc = std::wcsncmp(lhs, rhs, sz);
        if(rc == 0)
            std::wcout << "First " << sz << " characters of ["
                      << lhs << "] equal [" << rhs << "]\n";
        else if(rc < 0)
            std::wcout << "First " << sz << " characters of ["
                      << lhs << "] precede [" << rhs << "]\n";
        else if(rc > 0)
            std::wcout << "First " << sz << " characters of ["
                      << lhs << "] follow [" << rhs << "]\n";
    }

    int main()
    {
        const wchar_t str1[] = L"안녕하세요";
        const wchar_t str2[] = L"안녕히 가십시오";

        std::setlocale(LC_ALL, "en_US.utf8");
        std::wcout.imbue(std::locale("en_US.utf8"));
        demo(str1, str2, 5);
        demo(str2, str1, 8);
        demo(str1, str2, 2);
    }

输出：

    First 5 characters of [안녕하세요] precede [안녕히 가십시오]
    First 8 characters of [안녕히 가십시오] follow [안녕하세요]
    First 2 characters of [안녕하세요] equal [안녕히 가십시오]

### 参阅

strncmp | 比较两个字符串的一定量字符 (函数)
wcscmp | 比较两个宽字符串 (函数)
wmemcmp | 比较来自两个数组的一定量宽字符 (函数)
wcscoll | 按照当前本地环境比较两个宽字符串 (函数)