📌  相关文章
📜  如何在 C++ 中检查 char 数组是否相等(1)

📅  最后修改于: 2023-12-03 15:38:13.912000             🧑  作者: Mango

如何在 C++ 中检查 char 数组是否相等

在 C++ 中,可以使用标准库函数 strcmp 来比较两个 char 数组是否相等。此外,也可以使用循环逐个比较数组中的字符。

使用 strcmp 函数

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 数组,数组名本身就是指向数组首个元素的指针,因此不需要使用取地址符 & 来传递数组参数。

另外,也可以使用循环逐个比较字符的方法来比较字符数组是否相等,但需要同时比较数组的大小。