词典比较
可以使用运算符 ==
,!=
,<
,<=
,>
和 >=
按字典顺序比较两个 std::string
:
std::string str1 = "Foo";
std::string str2 = "Bar";
assert(!(str1 < str2));
assert(str > str2);
assert(!(str1 <= str2));
assert(str1 >= str2);
assert(!(str1 == str2));
assert(str1 != str2);
所有这些函数都使用底层的 std::string::compare()
方法来执行比较,并返回方便的布尔值。无论实际实现如何,这些功能的操作可以解释如下:
-
operator
==
:如果
str1
.length()== str2.length()
和每个字符对匹配,则返回true
,否则返回false
。 -
operator
!=
:如果
str1
.length()!= str2.length()
或一个字符对不匹配,则返回true
,否则返回false
。 -
operator
<
或 operator>
:找到第一个不同的字符对,比较它们然后返回布尔结果。
-
operator
<=
或 operator>=
:找到第一个不同的字符对,比较它们然后返回布尔结果。
注意: 术语字符对表示相同位置的两个字符串中的相应字符。为了更好地理解,如果两个示例字符串是 str1
和 str2
,并且它们的长度分别是 n
和 m
,那么两个字符串的字符对意味着每个 str1[i]
和 str2[i]
对,其中 i = 0,1,2,…,max(n, m) 。如果对于任何不存在相应字符的 i ,即当 i 大于或等于 n
或 m
时,它将被视为最低值。
以下是使用 <
的示例:
std::string str1 = "Barr";
std::string str2 = "Bar";
assert(str2 < str1);
步骤如下:
- 比较第一个字符,
'B' == 'B'
- 继续前进。 - 比较第二个字符,
'a' == 'a'
- 继续前进。 - 比较第三个字符,
'r' == 'r'
- 继续前进。 str2
系列现已耗尽,而str1
系列仍有特征。因此,str2 < str1
。