詞典比較

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

    找到第一個不同的字元對,比較它們然後返回布林結果。

注意: 術語字元對表示相同位置的兩個字串中的相應字元。為了更好地理解,如果兩個示例字串是 str1str2,並且它們的長度分別是 nm,那麼兩個字串的字元對意味著每個 str1[i]str2[i] 對,其中 i = 0,1,2,…,max(n, m) 。如果對於任何不存在相應字元的 i ,即當 i 大於或等於 nm 時,它將被視為最低值。

以下是使用 < 的示例:

std::string str1 = "Barr";
std::string str2 = "Bar";

assert(str2 < str1);

步驟如下:

  1. 比較第一個字元,'B' == 'B' - 繼續前進。
  2. 比較第二個字元,'a' == 'a' - 繼續前進。
  3. 比較第三個字元,'r' == 'r' - 繼續前進。
  4. str2 系列現已耗盡,而 str1 系列仍有特徵。因此,str2 < str1