C

wmemcmp

wmemcmp

在头文件中定义
int wmemcmp(const wchar_t * lhs,const wchar_t * rhs,size_t count);(自C95以来)

比较countlhsand 指向的宽字符(或兼容整数类型)数组的第一个宽字符rhs。比较按字典顺序完成。

结果的符号是所比较阵列中第一对宽字符值不同的标志。

如果count为零,则该功能不执行任何操作。

参数

lhs,rhs-指向宽字符数组进行比较
计数-要检查的宽字符数

返回值

如果在第一不同宽字符的值的负值lhs小于相应的宽字符中的值rhslhsrhs在词典顺序。

​0​如果所有count宽字符lhsrhs相等。

如果在第一不同宽字符的值正值lhs是比相应的宽字符中的值大rhsrhslhs在词典顺序。

注意

这个函数不是区域敏感的,并且不关注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):

另请参阅

wcscmp(C95)比较两个宽字符串(函数)
memcmp比较两个缓冲区(功能)
wcsncmp(C95)比较来自两个宽字符串(函数)的一定数量的字符

| C ++文档wmemcmp |