Reputation: 4683
So I have a dilemma. I need to compare two C-style strings and I searched for the functions that would be the most appropiate:
memcmp //Compare two blocks of memory (function)
strcmp //Compare two strings (function )
strcoll //Compare two strings using locale (function)
strncmp //Compare characters of two strings (function)
strxfrm //Transform string using locale (function)
The first one I think is for addresses, so the idea is out. The second one sounds like the best choice to me, but I wanna hear feedback anyway. The other three leave me clueless.
Upvotes: 9
Views: 6169
Reputation: 224962
Both memcmp
and strcmp
will work fine. To use the former, you'll need to know the length of the shorter string in advance.
Upvotes: 4
Reputation: 372814
For general string comparisons, strcmp
is the appropriate function. You should use strncmp
to only compare some number of characters from a string (for example, a prefix), and memcmp
to compare blocks of memory.
That said, since you're using C++, you should avoid this altogether and use the std::string
class, which is much easier to use and generally safer than C-style strings. You can compare two std::string
s for equality easily by just using the ==
operator.
Hope this helps!
Upvotes: 27