📅  最后修改于: 2023-12-03 15:38:13.912000             🧑  作者: Mango
在 C++ 中,可以使用标准库函数 strcmp
来比较两个 char 数组是否相等。此外,也可以使用循环逐个比较数组中的字符。
strcmp
函数可以比较两个字符串是否相等,并返回一个整数值表示比较结果,具体用法如下:
#include <cstring>
#include <iostream>
int main() {
char str1[] = "hello";
char str2[] = "world";
// 比较字符串
int result = strcmp(str1, str2);
// 输出比较结果
if (result == 0) {
std::cout << "str1 and str2 are equal" << std::endl;
} else {
std::cout << "str1 and str2 are not equal" << std::endl;
}
return 0;
}
代码输出结果如下:
str1 and str2 are not equal
代码片段使用了 C++11 的 nullptr
关键字来代替传统的 NULL
宏定义。
在比较两个字符串时,strcmp
函数会逐个比较字符,如果遇到不相等的字符,则立即返回比较结果。如果比较完成后两个字符串完全相等,则返回 0。
注意:strcmp
函数的参数是 char 数组,数组名本身就是指向数组首个元素的指针。因此不需要使用指针取地址符 &
来传递数组参数。
除了使用标准库函数外,也可以使用循环逐个比较字符的方法,具体代码如下:
#include <iostream>
bool IsEqual(char arr1[], char arr2[], int size) {
// 首先比较数组大小
if (size != sizeof(arr1)) {
return false;
}
// 逐个比较字符是否相等
for (int i = 0; i < size; i++) {
if (arr1[i] != arr2[i]) {
return false;
}
}
return true;
}
int main() {
char arr1[] = "hello";
char arr2[] = "world";
bool result = IsEqual(arr1, arr2, sizeof(arr1));
if (result) {
std::cout << "arr1 and arr2 are equal" << std::endl;
} else {
std::cout << "arr1 and arr2 are not equal" << std::endl;
}
return 0;
}
代码输出结果如下:
arr1 and arr2 are not equal
在比较字符数组时,需要同时比较数组的大小,否则有可能出现数组大小不同但内容相同的情况,导致错误的比较结果。
在 C++ 中,使用 strcmp
函数可以比较两个字符串是否相等。需要注意的是,strcmp
的参数是 char 数组,数组名本身就是指向数组首个元素的指针,因此不需要使用取地址符 &
来传递数组参数。
另外,也可以使用循环逐个比较字符的方法来比较字符数组是否相等,但需要同时比较数组的大小。