如何比较C++中的字符串?C++ 中进行字符串比较的三种方法
在编程世界中,不同类型的数据由编程语言处理。其中,“字符串”在所有编程语言中都具有重要意义。字符串是一种广泛用于编码的数据。编译程序时,有许多实例需要字符串比较。
比较字符串是一个常见的原则,我们广泛使用它。然而,不同的编程语言提供了不同的方法和技术来比较字符串。
主机博客默念给您整理了“在 C++ 中进行字符串比较的三种方法”:
在 C++ 中比较字符串的 3 种方法
C++ 中的字符串比较将使用以下方法可视化。
- 利用为字符串比较创建的“strcmp()”函数。
- 内置的“compare()”函数被明确设计用于比较字符串。
- 第三个是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++ 具有关系运算符 '==' 和 '!=' 符号,用于简单的字符串检查。编程专业人员可以根据自己的要求选择这些方法中的任何一种,以使字符串比较更加高效和准确。
文章作者:主机博客
文章标题:如何比较C++中的字符串?C++ 中进行字符串比较的三种方法
文章地址:https://www.hostblog.cn/1277.html
文章版权:
主机博客所发布的内容,部分为原创,转载请注明来源,网络转载文章如有侵权请联系我们!