Xi Xu's More Things

wcsncmp

来自cppreference.com
< c‎ | string‎ | wide
 
 
 
空终止宽字符串
函数
字符操作
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C99)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
转换成数值格式
(C95)(C99)
(C95)(C99)
(C99)(C95)(C99)
(C99)(C99)
字符串操作
(C95)(C11)
(C95)(C11)
(C95)(C11)
(C95)(C11)
(C95)(C11)
(C95)
(C95)
wcsncmp
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)(C11)
数组操作
(C95)(C11)
(C95)(C11)
(C95)
(C95)
(C95)
 
在标头 <wchar.h> 定义
int wcsncmp( const wchar_t* lhs, const wchar_t* rhs, size_t count );
(C95 起)

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

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

lhsrhs 不是指向空终止字符串的指针则行为未定义。

参数

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

返回值

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

lhsrhs 比较相等,或若 count 为零,则为零。

若字典序中 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 The wcsncmp function (第 434 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.24.4.4.3 The wcsncmp function (第 380 页)

参阅

(C95)
比较两个宽字符串
(函数)
(C95)
比较两个数组中一定数量的宽字符
(函数)
(C95)
根据当前本地环境比较两个宽字符串
(函数)