c++ - 对字符串使用小于比较运算符

标签 c++ operator-overloading string-comparison stdstring

我正在学习 C++ 教程,并使用 += 等运算符查看字符串和重载。 , == , !=等等。目前我有一个简单的 if 语句:

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

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

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

这是否定义了<作品?如果是这样,<charT,traits,Allocator> 是什么意思?意思/做?

以下运算符对字符串也有任何意义吗? -=*=

最佳答案

字符串上的小于运算符对字符串进行字典比较。这以与按字典顺序列出字符串相同的方式比较字符串,泛化为适用于具有非字母字符的字符串。

例如:

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

更多信息,请查看 std::lexicographical_compare 算法,小于运算符通常调用的算法。

对于 -=*=,这两个运算符都没有定义在字符串上。唯一定义的“算术”运算符是 ++=,它们执行字符串连接。

希望这会有所帮助!

关于c++ - 对字符串使用小于比较运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13829434/

相关文章:

c++ - 赋值运算符重载 : returning void versus returning reference parameter

php - PHP 宇宙飞船运算符 <=> 如何精确地处理字符串?

c++ - 如何在 C++ 中使用 gotoxy() 和 textcolor()

c++ - 默认构造一个整数数组会对其进行零初始化吗?

c++ - 重载赋值运算符与提供隐式构造函数

c++ - 重载 C++ 赋值运算符

javascript - 字符串比较在 d3.rgb 中不起作用

mysql - 如何在 MySQL 上进行 SQL 区分大小写的字符串比较?

c++ - 在 C++ 中使用 vector 设置并集算法

c++ - 从字符串中过滤掉 url