Namespaces
Variants
Views
Actions

std::memcmp

From cppreference.com
< 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.

Contents

[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';
}

Output:

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

[edit] See also

compares two strings
(function) [edit]
compares a certain amount of characters of two strings
(function) [edit]
C documentation for memcmp