std::memcmp
STD::memcmp
Defined in header | | |
---|---|---|
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。