< cpp‎ | string‎ | byte
Defined in header <cstring>
int memcmp( const void* lhs, const void* rhs, std::size_t count );

Reinterprets the objects pointed to by lhs and rhs as arrays of unsigned char and compares the first count characters of these arrays. The comparison is done lexicographically.


[edit] Parameters

lhs, rhs - pointers to the memory buffers to compare
count - number of bytes to examine

[edit] Return value

Negative value if the first differing byte (reinterpreted as unsigned char) in lhs is less than the corresponding byte in rhs.

0 if all count bytes of lhs and rhs are equal.

Positive value if the first differing byte in lhs is greater than the corresponding byte in rhs.

[edit] Notes

This function reads object representations, not the object values, and is typically meaningful for trivially-copyable objects only. For example, memcmp() between two objects of type std::string or std::vector will not compare their contents.

[edit] Example

#include <iostream>
#include <cstring>
int main()
    char a1[] = {'a', 'b', 'c'};
    char a2[] = {'a', 'b', 'd'};
    std::cout << "'abc' vs 'abd': " << std::memcmp(a1, a2, sizeof a1) << '\n'
              << "'abd' vs 'abc': " << std::memcmp(a2, a1, sizeof a1) << '\n'
              << "'abc' vs 'abc': " << std::memcmp(a1, a1, sizeof a1) << '\n';


'abc' vs 'abd': -1
'abd' vs 'abc': 1
'abc' vs 'abc': 0

[edit] See also

compares two strings
compares a certain amount of characters of two strings
C documentation for memcmp