在 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() 之间的区别:-
- compare() 返回一个 int,而关系运算符返回布尔值,即 true 或 false。
- 单个关系运算符对于某个操作是唯一的,而 compare() 可以根据传递的参数类型单独执行许多不同的操作。
- 我们可以使用 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()如何减少大量额外处理,因此建议在某个位置执行子字符串比较时使用它,否则两者的执行方式几乎相同。