wmemcmp
wmemcmp
在头文件 | | |
---|---|---|
int wmemcmp(const wchar_t * lhs,const wchar_t * rhs,size_t count); | | (自C95以来) |
比较count
由lhs
and 指向的宽字符(或兼容整数类型)数组的第一个宽字符rhs
。比较按字典顺序完成。
结果的符号是所比较阵列中第一对宽字符值不同的标志。
如果count
为零,则该功能不执行任何操作。
参数
lhs,rhs | - | 指向宽字符数组进行比较 |
---|---|---|
计数 | - | 要检查的宽字符数 |
返回值
如果在第一不同宽字符的值的负值lhs
小于相应的宽字符中的值rhs
:lhs
先rhs
在词典顺序。
0
如果所有count
宽字符lhs
和rhs
相等。
如果在第一不同宽字符的值正值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):
另请参阅
wcscmp(C95) | 比较两个宽字符串(函数) |
---|---|
memcmp | 比较两个缓冲区(功能) |
wcsncmp(C95) | 比较来自两个宽字符串(函数)的一定数量的字符 |
| C ++文档wmemcmp |