c++ - C++ 字符串==和 compare() 之间的差异?


std::string s = get_string();
std::string t = another_string();

if( !s.compare(t) ) 
{

代替


if( s == t )
{

我几乎总是使用后一个,因为我习惯于它,感觉很自然更有可读性,

有什么区别?

时间:

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.

似乎没有什么区别!

std :: string :: compare()返回一个int

  • 如果st相等,则等于零,
  • 如果s小于t,则小于零,
  • 如果s大于t,则大于0,


if (!s.compare(t)) {
 // 's' and 't' are equal.
}

相等运算符只测试相等并返回bool 。

如果你感兴趣两个字符串与另一个字符串相关联情况,那么compare()会很有用,

compare()对于快速排序和二进制搜索算法非常有用,自然排序和二分搜索只能通过std::less

如果比较整个字符串,应该只使用==运算符(不管它是否叫compare都是无关紧要)。

如果字符串相等,compare() 将返回 false ( 嗯,0 ) 。

所以不要为另一个而交换一个。

使用任何使代码更具可读性的用法。

...