如何比较C++中的字符串?C++ 中进行字符串比较的三种方法

在编程世界中,不同类型的数据由编程语言处理。其中,“字符串”在所有编程语言中都具有重要意义。字符串是一种广泛用于编码的数据。编译程序时,有许多实例需要字符串比较。

比较字符串是一个常见的原则,我们广泛使用它。然而,不同的编程语言提供了不同的方法和技术来比较字符串。

主机博客默念给您整理了“在 C++ 中进行字符串比较的三种方法”:

在 C++ 中比较字符串的 3 种方法

C++ 中的字符串比较将使用以下方法可视化。

  1. 利用为字符串比较创建的“strcmp()”函数。
  2. 内置的“compare()”函数被明确设计用于比较字符串。
  3. 第三个是C++中的关系运算符,如“==”和“!=”。

1.在C++中使用strcmp()函数

在 C++ 中,存在用于比较两个字符串的特定函数,其中包括源自 C 库的函数 strcmp()。此函数在按字典顺序比较两个字符串时起着至关重要的作用。词典编纂是指根据字符串的 ASCII 值逐个字符比较字符串。它还遵循字典顺序。

 

strcmp() 的语法:

strcmp() 函数将输入参数作为 char 数组,表示 C 样式的字符串。此过程对字母大小写很敏感,这意味着该函数会比较第一个和第二个字符串。

此函数返回 0、负值或正值。

int strcmp(const char *str1, const char *str2);

strcmp() 函数的返回值:

此函数返回:

  • 当两个字符串相同时为 0。
  • < 0(负数)当字符串 1 在字典上小于字符串 2 时。
  • 如果字符串 1 在字典上大于字符串 2,则> 0(正数)。

示例-1:

在即将到来的C++代码中,首先在开头包含头文件,例如“<cstring>”。然后,单独定义 char 数组并为每个数组分配一个字符串。此外,在 C++ 中,伴随数组名称的星号“*”表示指针。

#include<iostream>
using namespace std;
#include<cstring>
int main() {
const char *str1 = "Apple";
const char *str2 = "Orange";
cout << "String 1: ";
cout << str1 << endl;
cout << "String 2: ";
cout << str2 << "\n";
if(strcmp(str1,str2)==0){
cout << "\nBoth strings are equal." << endl;
} else
cout << "\nThe strings are not equal." << endl;
}

输出:

因此,表达式 strcmp(str1, str2) 比较字符串并得到一个非零值,因为输入是两个不同的字符串,因此结果如下:

String 1: Apple
String 2: Orange
The strings are not equal.

 

示例-2:

在此代码片段中,初始字符串和辅助字符串是预定义的,就像之前设置的那样。

#include<iostream>
#include<cstring>
using namespace std;
int main() {
const char *str1 = "Hello";
const char *str2 = "Hello";
cout << "String 1: ";
cout << str1 << endl;
cout << "String 2: ";
cout << str2 << "\n";
if(strcmp(str1,str2)==0)
printf("\nBoth strings are equal.");
else
printf("\nThe strings are not equal.");
}

输出:

在上面的代码中,字符串中的两组字符具有完全相同的 ASCII 值,并且 strcmp(str1, str2) 函数返回 0。这个零表示两个字符串中的“Hello”单词是相同的。

此外,如果两个数组在比较时都包含 null 字符,它们也将导致相同的输出。

String 1: Hello
String 2: Hello
Both strings are equal.

 

2.在C++中使用compare()功能

C++ 提供了专门用于比较两个字符串的 compare() 函数。

 

compare() 的语法:

compare() 函数的函数原型指定如下:

int compare(const string& string_name) const;

compare() 的返回值:

此库函数返回整数返回类型:

  • 如果两个字符串相同,则为 0。
  • (负值) - < 0,如果字符串 1 按字典顺序在字符串 2 之前按字母顺序排列。
  • (正值) - > 0,如果字符串 1 在字典上大于字符串 1。

示例-1:

后续代码演示了使用 compare() 函数比较两个字符串。

#include<iostream>
#include<string>
using namespace std;
int main() {
string str1("Apple");
string str2("Orange");
cout << "String 1: ";
cout << str1 << endl;
cout << "String 2: ";
cout << str2 << "\n";
int result = str1.compare(str2);
if (result == 0)
cout << "\nBoth strings are equal.";
cout << "\n";
else if (result < 0)
cout << "\nString 1 is smaller than String 2." << endl;
else
cout << "\nString 1 is greater than String 2." << endl;
}

输出:

在这种情况下,compare () 函数返回负值,因为在字符串比较中,字符串 2 大于字符串 1。

String 1: Apple
String 2: Orange
String 1 is smaller than String 2.

 

示例-2:

考虑以下代码,其中我们将在字符串中涉及整数值,并在这种情况下匹配大小写后体验可能的返回值。

#include<iostream>
#include<string>
using namespace std;
int main() {
string str1("Hello123");
string str2("Hello123");
string str3("Goodbye456");
cout << "String 1: ";
cout << str1 << "\n";
if(str1.compare(str2)==0)
cout << "\nStrings are equal." << "\n";
else
cout << "\nStrings are not equal." << endl;
cout << "String 2: ";
cout << str3 << "\n";
if(str3.compare(str1)==0)
cout << "\nStrings are equal." << "\n";
else
cout << "\nStrings are not equal." << endl;
}

输出:

相应的结果显示,此字符串比较中的所有字符都是相等的,并且在字符串中写入时,数值没有任何区别。

String 1: Hello123
Strings are equal.
String 2: Goodbye456
Strings are not equal.

 

3. C++ 中的关系运算符 (==, =!)

在 C++ 中,像 ==(双精度等于)和 !=(不等于)这样的关系运算符对于比较字符串非常宝贵。

 

“double equals”关系运算符的语法:

  • 验证两个字符串是否相等: string1 == string2

示例-1:

考虑一个示例,其中我们通过使用 while 循环来获取用户输入字符串。

#include<iostream>
#include<string>
using namespace std;
int main(){
string str1;
string str2;
int count=1;
while(count<3){
if(count==1){
cout << "Enter String 1: ";
cin >> str1;
} else {
cout << "Enter String 2: ";
cin >> str2;
}
count++;
}
if (str2==str1)
cout << "Strings are equal" << "\n";
else
cout << "Strings are not equal" << "\n";
}

输入/输出:

在这种情况下,用户输入的字符串按此顺序为“hello”和“apple”。“==”运算符比较两个字符串并返回一个标志,指示两个字符串不同。

Enter String 1:hello
Enter String 2:apple
Strings are not equal

 

“不等于”关系运算符的语法:

  • 检查两个字符串是否不相等:string1 != string2

示例-2:

在此方案中,使用不等于运算符“!=”并从用户那里获取输入字符串。用户应给出一个负数作为他们的输入。

#include<iostream>
#include<string>
using namespace std;
int main(){
string str1;
string str2;
cout << "Enter String 1: ";
cin >> str1;
cout << "Enter String 2: ";
cin >> str2;
if (str1 != str2)
cout << "Strings are not equal" << "\n";
else
cout << "Strings are equal" << "\n";
}

输入/输出:

一个字符串与另一个字符串匹配,结果如下:

Enter String 1:-1
Enter String 2:-1
Strings are equal

 

在前面提到的示例中,比较运算符从两个字符串的第一个字符开始计算两个字符串,直到两个字符串都完成,从而确定它们相等。

结论

最终,我们研究了三种不同的 C++ 字符串比较方法。一种方法涉及使用 strcmp(),它通过字符串的单个字符来评估字符串。另一种方法是使用 compare() 函数,为特定比较提供灵活性。此外,C++ 具有关系运算符 '==' 和 '!=' 符号,用于简单的字符串检查。编程专业人员可以根据自己的要求选择这些方法中的任何一种,以使字符串比较更加高效和准确。

THE END