public member function
<string>

std::string::compare

string (1)
int compare (const string& str) const;
substrings (2)
int compare (size_t pos, size_t len, const string& str) const;int compare (size_t pos, size_t len, const string& str,             size_t subpos, size_t sublen) const;
c-string (3)
int compare (const char* s) const;int compare (size_t pos, size_t len, const char* s) const;
buffer (4)
int compare (size_t pos, size_t len, const char* s, size_t n) const;
string (1)
int compare (const string& str) const noexcept;
substrings (2)
int compare (size_t pos, size_t len, const string& str) const;int compare (size_t pos, size_t len, const string& str,             size_t subpos, size_t sublen) const;
c-string (3)
int compare (const char* s) const;int compare (size_t pos, size_t len, const char* s) const;
buffer (4)
int compare (size_t pos, size_t len, const char* s, size_t n) const;
string (1)
int compare (const string& str) const noexcept;
substrings (2)
int compare (size_t pos, size_t len, const string& str) const;int compare (size_t pos, size_t len, const string& str,             size_t subpos, size_t sublen = npos) const;
c-string (3)
int compare (const char* s) const;int compare (size_t pos, size_t len, const char* s) const;
buffer (4)
int compare (size_t pos, size_t len, const char* s, size_t n) const;
Compare strings
Compares the value of the string object (or a substring) to the sequence of characters specified by its arguments.

The compared string is the value of the string object or -if the signature used has a pos and a len parameters- the substring that begins at its character in position pos and spans len characters.

This string is compared to a comparing string, which is determined by the other arguments passed to the function.

引數

str
Another string object, used entirely (or partially) as the comparing string.
pos
Position of the first character in the compared string.
如果它大於 字串長度,則丟擲 out_of_range
注意:第一個字元用值表示0(不是1).
len
Length of compared string (if the string is shorter, as many characters as possible).
string::npos 的值表示直到字串結尾的所有字元。
subpos, sublen
Same as pos and len above, but for the comparing string.
s
指向字元陣列的指標。
If argument n is specified (4), the first n characters in the array are used as the comparing string.
Otherwise (3), a null-terminated sequence is expected: the length of the sequence with the characters to use as comparing string is determined by the first occurrence of a null character.
n
Number of characters to compare.

size_t 是一個無符號整數型別(與成員型別 string::size_type 相同)。

返回值

Returns a signed integral indicating the relation between the strings
relation between compared string and comparing string
0They compare equal
<0Either the value of the first character that does not match is lower in the compared string, or all compared characters match but the compared string is shorter.
>0Either the value of the first character that does not match is greater in the compared string, or all compared characters match but the compared string is longer.

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// comparing apples with apples
#include <iostream>
#include <string>

int main ()
{
  std::string str1 ("green apple");
  std::string str2 ("red apple");

  if (str1.compare(str2) != 0)
    std::cout << str1 << " is not " << str2 << '\n';

  if (str1.compare(6,5,"apple") == 0)
    std::cout << "still, " << str1 << " is an apple\n";

  if (str2.compare(str2.size()-5,5,"apple") == 0)
    std::cout << "and " << str2 << " is also an apple\n";

  if (str1.compare(6,5,str2,4,5) == 0)
    std::cout << "therefore, both are apples\n";

  return 0;
}

輸出
green apple is not red apple
still, green apple is an apple
and red apple is also an apple
therefore, both are apples


複雜度

Unspecified, but generally up to linear in both the compared and comparing string's lengths.

迭代器有效性

沒有變化。

資料競爭

該物件被訪問。

異常安全

Strong guarantee: if an exception is thrown, there are no changes in the string (except (1), which is guaranteed to not throw).

如果已知s未指向足夠長的陣列,會導致未定義行為

如果pos大於字串長度,或者如果subpos大於str長度,則會丟擲out_of_range異常。

另見