开发者

strcmp or string::compare?

开发者 https://www.devze.com 2023-02-20 17:04 出处:网络
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?

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 :)

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号