首页
学习
活动
专区
圈层
工具
发布

std::memcmp

Defined in header <cstring>

int memcmp( const void* lhs, const void* rhs, std::size_t count );

重新解释lhsrhs的数组unsigned char并比较了第一个count这些数组的字符。比较是按字典顺序进行的。

结果的符号是第一对字节值之间差值的符号,这两个字节都被解释为unsigned char%29,在所比较的对象中存在差异。

参数

lhs, rhs

-

pointers to the memory buffers to compare

count

-

number of bytes to examine

返回值

如果第一个不同的字节%28被重新解释为unsigned char占29%lhs中的对应字节。rhs...

​0​如果所有count字节lhsrhs是平等的。

中的第一个不同字节的正值。lhs中的对应字节。rhs...

注记

此函数读取对象表示,而不是对象值,而且通常只对没有填充的可复制的琐碎对象有意义。例如,memcmp()在两个类型的对象之间std::stringstd::vector不会比较它们的内容memcmp()在两个类型的对象之间struct{char c; int n;的值可能不同的填充字节。cn都是一样的。

二次

代码语言:javascript
代码运行次数:0
复制
#include <iostream>
#include <cstring>
 
void demo(const char* lhs, const char* rhs, std::size_t sz)
{
    std::cout << std::string(lhs, sz);
    int rc = std::memcmp(lhs, rhs, sz);
    if(rc == 0)
        std::cout << " compares equal to ";
    else if(rc < 0)
        std::cout << " precedes ";
    else if(rc > 0)
        std::cout << " follows ";
    std::cout << std::string(rhs, sz) << " in lexicographical order\n";
}
 
int main()
{
    char a1[] = {'a','b','c'};
    char a2[sizeof a1] = {'a','b','d'};
 
    demo(a1, a2, sizeof a1);
    demo(a2, a1, sizeof a1);
    demo(a1, a1, sizeof a1);
}

二次

产出:

二次

代码语言:javascript
代码运行次数:0
复制
abc precedes abd in lexicographical order
abd follows abc in lexicographical order
abc compares equal to abc in lexicographical order

二次

另见

strcmp

compares two strings (function)

strncmp

compares a certain amount of characters of two strings (function)

C.Memcmp文件

代码语言:txt
复制
 © cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券