C++ String::compare() 函数



C++ 的std::string::compare()函数用于比较两个字符串。它提供了一种按字典顺序比较字符串对象内容与另一个字符串或子字符串的方法。它返回一个整数,如下所示:

0:字符串相等

<0:调用字符串小于参数字符串。

>0:调用字符串大于参数字符串。

此函数可用于比较整个字符串或指定范围的字符。

语法

以下是 std::string::compare() 函数的语法。

int compare (const string& str) const noexcept;
or
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;
or
int compare (const char* s) const;
int compare (size_t pos, size_t len, const char* s) const;
or
int compare (size_t pos, size_t len, const char* s, size_t n) const;

参数

  • str − 指示另一个字符串对象。
  • len − 指示比较字符串的长度。
  • pos − 指示对应字符串中第一个字符的位置。
  • subpos, sublen − 与上面的 pos 和 len 相同。
  • n − 指示要比较的字符数。
  • s − 指示指向字符数组的指针。

返回值

它返回一个带符号整数,指示字符串之间的关系。

异常

如果抛出异常,则字符串不会发生任何更改。

示例 1

以下是一个使用 C++ 演示 string::compare 的基本示例。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string X1 = "apple";
   string X2 = "banana";
   int result = X1.compare(X2);
   if (result == 0) {
      cout << " Both are equal " << endl;
   } else if (result < 0) {
      cout << X1 << " is less than " << X2 << endl;
   } else if (result > 0) {
      cout << X1 << " is greater than " << X2 << endl;
   }
   return 0;
}

输出

让我们编译并运行上述程序,这将产生以下结果:

apple is less than banana

示例 2

在这个例子中,我们比较一个子字符串与另一个字符串。所以它将输出结果打印为相等。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string X1 = "Tutorialspoint";
   string X2 = "point";
   int result = X1.compare(9, 5, X2);
   if (result == 0) {
      cout << " Both are equal " << endl;
   } else if (result < 0) {
      cout << X1.substr(6, 5) << " is less than " << X2 << endl;
   } else if (result > 0) {
      cout << X1.substr(6, 5) << " is greater than " << X2 << endl;
   }
   return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出。

Both string are equal.

示例 3

以下是用 string::compare() 函数比较两个字符串子字符串的另一个示例。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string X1 = "hello world";
   string X2 = "goodbye world";
   int result = X1.compare(6, 5, X2, 8, 5);
   if (result == 0) {
      cout << " Both are equal " << endl;
   } else if (result < 0) {
      cout << X1.substr(6, 5) << " is less than " << X2.substr(8, 5) << endl;
   } else {
      cout << X1.substr(6, 5) << " is greater than " << X2.substr(8, 5) << endl;
   }
   return 0;
}

输出

以下是上述代码的输出。

The substrings are equal.                 

示例 4

在这个例子中,我们将一个字符串与空字符串进行比较。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string X1 = "hello";
   string X2 = "";
   int result = X1.compare(X2);
   if (result == 0) {
      cout << " Both are equal " << endl;
   } else if (result < 0) {
      cout << X1 << " is lesser than " << X2 << endl;
   } else {
      cout << X1 << " is greater than " << X2 << endl;
   }
   return 0;
}

输出

以下是上述代码的输出。

hello is greater than  
string.htm
广告