wmemcmp
出自 cppreference.cn
定义于头文件 <wchar.h> |
||
int wmemcmp( const wchar_t* lhs, const wchar_t* rhs, size_t count ); |
(自 C95 起) | |
比较由 lhs 和 rhs 指向的宽字符(或兼容的整数类型)数组的前 count 个宽字符。比较是按字典顺序进行的。
结果的符号是正在比较的数组中第一对不同宽字符的值之差的符号。
如果 count
为零,则该函数不执行任何操作。
目录 |
[编辑] 参数
lhs, rhs | - | 指向要比较的宽字符数组的指针 |
count | - | 要检查的宽字符数 |
[编辑] 返回值
如果 lhs 中第一个不同的宽字符的值小于 rhs 中对应宽字符的值,则为负值:lhs 在字典顺序中位于 rhs 之前。
0 如果 lhs 和 rhs 的所有 count 个宽字符都相等。
如果 lhs 中第一个不同的宽字符的值大于 rhs 中对应宽字符的值,则为正值:rhs 在字典顺序中位于 lhs 之前。
[编辑] 注解
此函数不区分区域设置,并且不关注它检查的 wchar_t 对象的值:空值以及无效的宽字符也会进行比较。
[编辑] 示例
运行此代码
#include <locale.h> #include <stdio.h> #include <wchar.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
[编辑] 参考文献
- C23 标准 (ISO/IEC 9899:2024)
- 7.29.4.4.5 wmemcmp 函数 (页码:待定)
- C17 标准 (ISO/IEC 9899:2018)
- 7.29.4.4.5 wmemcmp 函数 (页码:待定)
- C11 标准 (ISO/IEC 9899:2011)
- 7.29.4.4.5 wmemcmp 函数 (页码:435)
- C99 标准 (ISO/IEC 9899:1999)
- 7.24.4.4.5 wmemcmp 函数 (页码:381)
[编辑] 参见
(C95) |
比较两个宽字符串 (函数) |
比较两个缓冲区 (函数) | |
(C95) |
比较两个宽字符串中一定数量的字符 (函数) |
C++ 文档 关于 wmemcmp
|