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