詞典比較
可以使用運算子 ==
,!=
,<
,<=
,>
和 >=
按字典順序比較兩個 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
。