📜  在 C++ 中比较两个字符串

📅  最后修改于: 2022-05-13 01:57:07.841000             🧑  作者: Mango

在 C++ 中比较两个字符串

给定两个字符串,如何检查两个字符串是否相等。
例子:

Input  : ABCD, XYZ
Output : ABCD is not equal to XYZ
         XYZ is greater than ABCD

Input  : Geeks, forGeeks
Output : Geeks is not equal to forGeeks
         forGeeks is greater than Geeks

可以使用以下两种方法中的任何一种来解决此问题

  • C++ 关系运算符
CPP
// CPP code to implement relational
// operators on string objects
#include 
using namespace std;
 
void relationalOperation(string s1, string s2)
{
 
    if (s1 != s2)
    {
        cout << s1 << " is not equal to " << s2 << endl;
        if (s1 > s2)
            cout << s1 << " is greater than " << s2 << endl;
        else
            cout << s2 << " is greater than " << s1 << endl;
    }
    else
        cout << s1 << " is equal to " << s2 << endl;
}
 
// Driver code
int main()
{
    string s1("Geeks");
    string s2("forGeeks");
    relationalOperation(s1, s2);
    string s3("Geeks");
    string s4("Geeks");
    relationalOperation(s3, s4);
    return 0;
}


CPP
// CPP code perform relational
// operation using compare function
#include 
 
using namespace std;
 
void compareFunction(string s1, string s2)
{
    // comparing both using inbuilt function
    int x = s1.compare(s2);
 
    if (x != 0) {
        cout << s1
             << " is not equal to "
             << s2 << endl;
        if (x > 0)
            cout << s1
                 << " is greater than "
                 << s2 << endl;
        else
            cout << s2
                 << " is greater than "
                 << s1 << endl;
    }
    else
        cout << s1 << " is equal to " << s2 << endl;
}
 
// Driver Code
int main()
{
    string s1("Geeks");
    string s2("forGeeks");
    compareFunction(s1, s2);
    string s3("Geeks");
    string s4("Geeks");
    compareFunction(s3, s4);
    return 0;
}


输出
Geeks is not equal to forGeeks
forGeeks is greater than Geeks
Geeks is equal to Geeks
  • 标准::比较()

CPP

// CPP code perform relational
// operation using compare function
#include 
 
using namespace std;
 
void compareFunction(string s1, string s2)
{
    // comparing both using inbuilt function
    int x = s1.compare(s2);
 
    if (x != 0) {
        cout << s1
             << " is not equal to "
             << s2 << endl;
        if (x > 0)
            cout << s1
                 << " is greater than "
                 << s2 << endl;
        else
            cout << s2
                 << " is greater than "
                 << s1 << endl;
    }
    else
        cout << s1 << " is equal to " << s2 << endl;
}
 
// Driver Code
int main()
{
    string s1("Geeks");
    string s2("forGeeks");
    compareFunction(s1, s2);
    string s3("Geeks");
    string s4("Geeks");
    compareFunction(s3, s4);
    return 0;
}
输出
Geeks is not equal to forGeeks
forGeeks is greater than Geeks
Geeks is equal to Geeks

C++ 关系运算符和 compare() 之间的区别:-

  1. compare() 返回一个 int,而关系运算符返回布尔值,即 true 或 false。
  2. 单个关系运算符对于某个操作是唯一的,而 compare() 可以根据传递的参数类型单独执行许多不同的操作。
  3. 我们可以使用 compare() 比较给定字符串中任何位置的任何子字符串,否则需要使用关系运算符进行逐字提取字符串的长过程。

例子:-

  • 使用比较()
// Compare 3 characters from 3rd position
// (or index 2) of str1 with 3 characters 
// from 4th position of str2. 
if (str1.compare(2, 3, str2, 3, 3) == 0)
   cout<<"Equal";
else
   cout<<"Not equal";
  • 使用关系运算符
for (i = 2, j = 3; i <= 5 && j <= 6; i++, j++)    
{ 
    if (s1[i] != s2[j])
       break;
}
if (i == 6 && j == 7)
    cout << "Equal";
else
    cout << "Not equal";

上面的示例清楚地显示了compare()如何减少大量额外处理,因此建议在某个位置执行子字符串比较时使用它,否则两者的执行方式几乎相同。