更新时间:2023-11-14 22:47:28
这是标准对 operator ==
21.4.8.2 operator ==
template< class charT,class traits,class Allocator>
bool operator ==(const basic_string< charT,traits,Allocator>& lhs,
const basic_string< charT,traits,Allocator>& rhs)noexcept;
返回:lhs.compare(rhs)== 0。 p>
看起来没什么区别!
I just read some recommendations on using
std::string s = get_string();
std::string t = another_string();
if( !s.compare(t) )
{
instead of
if( s == t )
{
I'm almost always using the last one because I'm used to it and it feels natural, more readable. I didn't even know that there was a separate comparison function. To be more precise, I thought == would call compare().
What are the differences? In which contexts should one way be favored to the other?
I'm considering only the cases where I need to know if a string is the same value as another string.
This is what the standard has to say about operator==
21.4.8.2 operator==
template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT,traits,Allocator>& lhs,
const basic_string<charT,traits,Allocator>& rhs) noexcept;
Returns: lhs.compare(rhs) == 0.
Seems like there isn't much of a difference!