std::memcmp
Defined in header <cstring> | | |
|---|---|---|
int memcmp( const void* lhs, const void* rhs, std::size_t count ); | | |
重新解释lhs和rhs的数组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字节lhs和rhs是平等的。
中的第一个不同字节的正值。lhs中的对应字节。rhs...
注记
此函数读取对象表示,而不是对象值,而且通常只对没有填充的可复制的琐碎对象有意义。例如,memcmp()在两个类型的对象之间std::string或std::vector不会比较它们的内容memcmp()在两个类型的对象之间struct{char c; int n;的值可能不同的填充字节。c和n都是一样的。
例
二次
#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);
}二次
产出:
二次
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文件
© cppreference.com在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

