我正在学习 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/