命名空间
变体
操作

wcsncmp

来自 cppreference.com
< c‎ | string‎ | wide
定义在头文件 <wchar.h>
int wcsncmp( const wchar_t* lhs, const wchar_t* rhs, size_t count );
(自 C95)

比较两个以空字符结尾的宽字符串中最多 count 个宽字符。比较按字典序进行。

结果的符号是比较的两个字符串中第一个不同的宽字符对的值之差的符号。

如果 lhsrhs 不是指向以空字符结尾的字符串的指针,则行为未定义。

内容

[编辑] 参数

lhs, rhs - 指向要比较的以空字符结尾的宽字符串的指针
count - 要比较的最大字符数

[编辑] 返回值

如果 lhs 在字典序中出现在 rhs 之前,则为负值。

如果 lhsrhs 相等,则为零。

如果 lhs 在字典序中出现在 rhs 之后,则为正值。

[编辑] 注意

wcscollwcsxfrm 不同,此函数不区分区域设置。

[编辑] 示例

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
 
void demo(const wchar_t *lhs, const wchar_t *rhs, int sz)
{
    int rc = wcsncmp(lhs, rhs, sz);
    if(rc == 0)
        printf("First %d characters of [%ls] equal [%ls]\n", sz, lhs, rhs);
    else if(rc < 0)
        printf("First %d characters of [%ls] precede [%ls]\n", sz, lhs, rhs);
    else if(rc > 0)
        printf("First %d characters of [%ls] follow [%ls]\n", sz, lhs, rhs);
}
 
int main(void)
{
    const wchar_t *str1 = L"안녕하세요";
    const wchar_t *str2 = L"안녕히 가십시오";
 
    setlocale(LC_ALL, "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 [안녕히 가십시오]

[编辑] 参考资料

  • C11 标准 (ISO/IEC 9899:2011)
  • 7.29.4.4.3 wcsncmp 函数 (p: 434)
  • C99 标准 (ISO/IEC 9899:1999)
  • 7.24.4.4.3 wcsncmp 函数 (p: 380)

[编辑] 另请参阅

(C95)
比较两个宽字符串
(函数) [编辑]
比较两个数组中一定数量的宽字符
(函数) [编辑]
根据当前区域设置比较两个宽字符串
(函数) [编辑]
C++ 文档 用于 wcsncmp