strcmp or string::compare?
I want to compare two strings. Is it possible with strcmp
? (I tried开发者_开发技巧 and it does not seem to work). Is string::compare
a solution?
Other than this, is there a way to compare a string
to a char
?
Thanks for the early comments. I was coding in C++ and yes it was std::string
like some of you mentioned.
I didn't post the code because I wanted to learn the general knowledge and it is a pretty long code, so it was irrelevant for the question.
I think I learned the difference between C++ and C, thanks for pointing that out. And I will try to use overloaded operators now. And by the way string::compare
worked too.
For C++, use std::string
and compare using string::compare
.
For C use strcmp
. If your (i meant your programs) strings (for some weird reason) aren't nul
terminated, use strncmp
instead.
But why would someone not use something as simple as ==
for std::string
?
Assuming you mean std::string
, why not use the overloaded operators: str1 == str2
, str1 < str2
?
See std::basic_string::compare
and std::basic_string
operators reference (in particular, there exists operator==
, operator!=
, operator<
, etc.). What else do you need?
When using C++ use C++ functions viz. string::compare
. When using C and you are forced to use char*
for string, use strcmp
By your question, "is there a way to compare a string to a char?" do you mean "How do I find out if a particular char is contained in a string?" If so, the the C-library function:
char *strchr(const char *s, int c);
will do it for you.
-- pete
std::string can contain (and compare!) embedded null characters.
are*comp(...) will compare c-style strings, comparing up to the first null character (or the specified max nr of bytes/characters)
string::compare is actually implemented as a template basic_string so you can expect it to work for other types such as wstring
On the unclear phrase to "compare a string to a char" you can compare the char to *string.begin() or lookup the first occurrence (string::find_first_of and string::find_first_not_of)
Disclaimer: typed on my HTC, typos reserved :)
精彩评论