C++ 比较字符串的不同方法
本节将讨论在C++编程语言中比较给定字符串的不同方法。字符串的比较确定了第一个字符串是否等于另一个字符串。例如:HELLO和Hello是两个不同的字符串。
在C++编程语言中,有多种比较字符串的方法,如下所示:
- 使用strcmp()函数
- 使用compare()函数
- 使用关系运算符
- 使用for循环和if语句
- 使用用户自定义函数
strcmp()函数
strcmp()是string.h头文件中的一个预定义库函数。strcmp()函数按照词典顺序比较两个字符串。这意味着strcmp()函数从第一个字符串开始逐个字符与第二个字符串进行比较,直到两个字符串的字符全部相同或遇到空字符。
语法
int strcmp ( const char *leftstr, const char *rightstr );
参数:
leftstr: 定义左字符串的字符。
rightstr: 定义右字符串的字符。
返回值:
左字符串从左边开始与第二个字符串进行逐个字符比较,直到两个字符串的末尾。如果两个字符串相等,strcmp()函数返回字符串相等。否则,字符串不相等。
让我们创建一个程序,使用C++中的strcmp()函数比较字符串。
Program1.cpp
#include
using namespace std;
#include
int main ()
{
// declare strings
const char *str1 = " Welcome to JavaTpoint";
const char *str2 = " Welcome to JavaTpoint";
const char *str3 = " JavaTpoint";
const char *str4 = " Javatpoint";
cout << " String 1: " << str1 << endl;
cout << " String 2: " << str2 << endl;
// use strcmp() function to validate the strings are equal
if (strcmp (str1, str2) == 0)
{
cout << " \n Both strings are equal. " << endl;
}
else
{
cout << " The strings are not equal. " << endl;
}
cout << " \n String 3: " << str3 << endl;
cout << " String 4: " << str4 << endl;
// use strcmp() function to validate the strings are equal
if (strcmp (str3, str4) == 0)
{
cout << " \n Both strings are equal. " << endl;
}
else
cout << " \n The strings are not equal. ";
return 0;
}
输出
String 1: Welcome to JavaTpoint
String 2: Welcome to JavaTpoint
Both strings are equal.
String 3: JavaTpoint
String 4: Javatpoint
The strings are not equal.
compare()函数
compare()函数是C++语言中预定义的库函数。compare()函数用于比较两个给定的字符串,并根据匹配的情况返回以下结果:
- 如果两个字符串相同,函数返回0。
- 如果第一个字符串的字符值小于第二个字符串,函数返回< 0。
- 如果第二个字符串大于第一个字符串,函数返回大于0或>0。
语法
int compare (const string &str) const;
让我们创建一个简单的程序,使用C++中的compare()函数比较两个字符串。
Program2.cpp
#include
using namespace std;
int main ()
{
string str1, str2; // declare string variable
cout << " Enter the string 1: ";
cin >> str1;
cout << " Enter the string 2: ";
cin >> str2;
// use compare() function to compare the second string with first string
int i = str1.compare(str2);
if ( i < 0)
{
cout << str1 << " is smaller than " << str2 << " string" << endl;
}
else if ( i > 0)
{
cout << str2 << " is greater than " << str1 << " string." << endl;
}
else // i == 0;
{
cout << " Both strings are equal.";
}
return 0;
}
输出
1st Run:
Enter the string 1: Program
Enter the string 2: program
Program is smaller than program string
2nd Run:
Enter the string 1: APPLE
Enter the string 2: APPLE
Both strings are equal.
关系运算符
它是在C++中用于比较两个字符串或数值的运算符。C++具有不同类型的关系运算符,如==
相等,’!=’不等,’>’大于,'<‘小于。但在这里,我们只使用两个运算符,即==
等于和!=
不等,以便轻松比较字符串。
语法
String1 == string2 // here, we use double equal to operator
Or
String1 != string2 // here, we use not equal to operator
在C++中使用等于(==
)运算符比较两个字符串
等于(==
)运算符: 用于检查第一个字符串与第二个字符串的相等性。
让我们创建一个程序,在C++中使用双等于(==
)运算符比较字符串。
Program3.cpp
#include
using namespace std;
int main ()
{
// declare string variables
string str1;
string str2;
cout << " Enter the String 1: " << endl;
cin >> str1;
cout << " Enter the String 2: " << endl;
cin >> str2;
// use '==' equal to operator to check the equality of the string
if ( str1 == str2)
{
cout << " String is equal." << endl;
}
else
{
cout << " String is not equal." << endl;
}
return 0;
}
输出
Enter the String 1:
JavaTpoint
Enter the String 2:
javatpoint
String is not equal.
**2 nd 执行: **
Enter the String 1:
Program
Enter the String 2:
Program
String is equal.
使用不等于(!=)关系运算符比较两个字符串
让我们创建一个程序,使用C++中的不等于(!=)运算符来比较字符串是否相等。
Program4.cpp
#include
using namespace std;
int main ()
{
// declare string variables
string str1;
string str2;
cout << " Enter the String 1: " << endl;
cin >> str1;
cout << " Enter the String 2: " << endl;
cin >> str2;
// use '!=' not equal to operator to check the equality of the string
if ( str1 != str2)
{
cout << " String is not equal." << endl;
}
else
{
cout << " String is equal." << endl;
}
return 0;
}
输出
Enter the String 1:
JAVATpoint
Enter the String 2:
JavaTPOINT
String is not equal.
第二次运行:
Enter the String 1:
HELLO
Enter the String 2:
HELLO
String is equal.
使用for循环和if语句在C++中比较两个字符串
Program5.cpp
#include
using namespace std;
int main ()
{
char s1[50], s2[50]; // declare character array
int i, disp;
cout << " Enter the String 1: " << endl;
cin >> s1;
cout << " Enter the String 2: " << endl;
cin >> s2;
for (i = 0; s1[i] == s2[i] && s1[i] == '\0'; i++);
if (s1[i] < s2[i])
{
cout << " String 1 is less than String 2";
}
else if (s1[i] > s2[i])
{
cout << " String 2 is less than String 1";
}
else
{
cout << " String 1 is equal to String 2";
}
return 0;
}
输出
Enter the String 1:
WELCOME
Enter the String 2:
WELCOME
String 1 is equal to String 2
使用C++中的用户定义函数比较两个字符串
让我们创建一个简单的程序,使用C++中的用户定义函数来比较第一个字符串和另一个字符串。
Program6.cpp
#include
using namespace std;
void RelationalCompare ( string str1, string str2)
{
// use relational not equal operator
if ( str1 != str2)
{
cout << str1 << " is not equal to " << str2 << " string. " << endl;
if (str1 > str2)
{
cout << str1 << " is greater than " << str2 << " string." << endl;
}
else
{
cout << str2 << " is greater than " << str1 << " string." << endl;
}
}
else
cout << str1 << " is equal to " << str2 << " string." << endl;
}
int main ()
{
string str1 ( "JavaT");
string str2 ( "Tpoint");
// call function
RelationalCompare (str1, str2);
string str3 ("JavaTpoint");
string str4 ("JavaTpoint");
RelationalCompare (str3, str4);
return 0;
}
输出
JavaT is not equal to Tpoint string.
Tpoint is greater than JavaT string.
JavaTpoint is equal to JavaTpoint string.