在线文档教程
C++
字符串 | Strings

std::memcmp

STD::memcmp

Defined in header
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都是一样的。

二次

#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

二次

另见

strcmpcompares two strings (function)
strncmpcompares a certain amount of characters of two strings (function)

C.Memcmp文件

© cppreference.com

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

http://en.cppreference.com/w/cpp/string/字节/memcmp