##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### 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.

### [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

Run this code

    #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

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

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/string/byte/memcmp&oldid=67215"