使用小于比较操作字符串(Using the less than comparison operato

2019-07-04 23:18发布

我下面的C ++教程,看着弦和与运营商如+ =,==,!=等,现在有一个简单的if语句超载

if(s1 < s2)
    cout << s2 <<endl;
else
  if(s2 < s1)
    cout << s1 << endl;
  else
    cout << "Equal\n";

但这是如何工作的,以及程序如何决定哪些字符串大于另一个? 环顾四周,我发现一个基本的模板decleration:

template<class charT, class traits, class Allocator>
  bool operator< ( const basic_string<charT,traits,Allocator>& lhs,
                const basic_string<charT,traits,Allocator>& rhs );

这是否定义如何<作品? 如果是这样,是什么意思/怎么办?

也可做以下运营商已经字符串任何意义? - =和* =

任何意见是极大的赞赏!

Answer 1:

在小于运算符对字符串确实在弦上的逐一比较。 与此相比,它们会在字典顺序列出以同样的方式,推广到与非字母字符的字符串工作的字符串。

例如:

"a" < "b"
"a" < "ab"
"A" < "a"             (Since A has ASCII value 65; a has a higher ASCII value)
"cat" < "caterpillar"

欲了解更多信息,看std::lexicographical_compare算法,其中小于操作通常调用。

至于-=*= ,这些操作符没有被对字符串定义。 定义唯一的“算术”运算符++= ,它们执行字符串连接。

希望这可以帮助!



Answer 2:

比较运营商实施字典顺序串。

-=*=没有为字符串定义。



文章来源: Using the less than comparison operator for strings