首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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
复制
#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
复制
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。

扫码关注腾讯云开发者

领取腾讯云代金券