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。
如果 lhs 和 rhs 的所有 count 个宽字符都相等,则返回 0。
如果 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 函数 (p: TBD)
- C17 标准 (ISO/IEC 9899:2018)
- 7.29.4.4.5 wmemcmp 函数 (p: TBD)
- C11 标准 (ISO/IEC 9899:2011)
- 7.29.4.4.5 wmemcmp 函数 (p: 435)
- C99 标准 (ISO/IEC 9899:1999)
- 7.24.4.4.5 wmemcmp 函数 (p: 381)
[编辑] 另请参阅
(C95) |
比较两个宽字符串 (函数) |
比较两个缓冲区 (函数) | |
(C95) |
比较两个宽字符串中的一定数量的字符 (函数) |
C++ documentation for wmemcmp
|