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异常。

另见