Xi Xu's More Things

wmemcmp

来自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)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)(C11)
数组操作
(C95)(C11)
(C95)(C11)
wmemcmp
(C95)
(C95)
(C95)
 
在标头 <wchar.h> 定义
int wmemcmp( const wchar_t *lhs, const wchar_t *rhs, size_t count );
(C95 起)

比较 lhsrhs 所指向的宽字符(或兼容整数类型)数组的首 count 个宽字符。按字典序比较。

结果的符号是在被比较数组中相异的首对宽字符值的差。

count 为零,则不做任何事。

参数

lhs, rhs - 指向要比较的宽字符数组的指针
count - 要检验的宽字符数

返回值

lhs 中首个相异的宽字符小于 rhs 中对应的宽字符则为负值:字典序中 lhs 先于 rhs

lhsrhs 的全部 count 个宽字符相等则为 0

lhs 中首个相异的宽字符大于 rhs 中对应的宽字符则为正值:字典序中 rhs 先于 lhs

注意

此函数不考虑本地环境,且不注意其所检验的 wchar_t 对象的值:亦会比较空字符和非法宽字符。

示例

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
 
void demo(const wchar_t* lhs, const wchar_t* rhs, size_t sz)
{
    for(size_t n = 0; n < sz; ++n) putwchar(lhs[n]);
    int rc = wmemcmp(lhs, rhs, sz);
    if(rc == 0)
        wprintf(L" compares equal to ");
    else if(rc < 0)
        wprintf(L" precedes ");
    else if(rc > 0)
        wprintf(L" follows ");
    for(size_t n = 0; n < sz; ++n) putwchar(rhs[n]);
    wprintf(L" in lexicographical order\n");
}
 
int main(void)
{
    setlocale(LC_ALL, "en_US.utf8");
 
    wchar_t a1[] = {L'α',L'β',L'γ'};
    wchar_t a2[] = {L'α',L'β',L'δ'};
 
    size_t sz = sizeof a1 / sizeof *a1;
    demo(a1, a2, sz);
    demo(a2, a1, sz);
    demo(a1, a1, sz);
}

输出:

αβγ precedes αβδ in lexicographical order
αβδ follows αβγ in lexicographical order
αβγ compares equal to αβγ in lexicographical order

引用

  • C11 标准(ISO/IEC 9899:2011):
  • 7.29.4.4.5 The wmemcmp function (第 435 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.24.4.4.5 The wmemcmp function (第 381 页)

参阅

(C95)
比较两个宽字符串
(函数)
比较两块缓冲区
(函数)
(C95)
比较来自两个宽字符串的一定量字符
(函数)