📌  相关文章
📜  检查两个字符串是否相同,忽略它们的大小写(1)

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

忽略大小写比较字符串

在编程中,有时需要检查两个字符串是否相同,但需要忽略它们的大小写。本文将介绍几种方法实现这个功能。

方法1:使用 strcasecmp 函数

strcasecmp 函数用于比较两个字符串,不区分大小写。该函数在头文件 string.h 中声明。

#include <string.h>

int strcasecmp(const char *s1, const char *s2);

参数 s1 和 s2 分别为两个要比较的字符串,函数将它们不区分大小写地比较。如果两个字符串相等,返回0;如果 s1 大于 s2,返回一个正整数;如果 s1 小于 s2,返回一个负整数。

以下是示例代码:

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "Hello, World!";
    char str2[] = "hello, world!";

    if (strcasecmp(str1, str2) == 0) {
        printf("The strings are equal.\n");
    } else {
        printf("The strings are not equal.\n");
    }

    return 0;
}

输出结果为:

The strings are equal.
方法2:转换为小写字母后比较

另一种方法是将两个字符串先转换成小写字母,再比较它们是否相等。可以使用标准库函数 tolower 来实现字符的小写转换。

以下是示例代码:

#include <stdio.h>
#include <ctype.h>
#include <string.h>

void tolower_str(char *str);

int main() {
    char str1[] = "Hello, World!";
    char str2[] = "hello, world!";

    tolower_str(str1);
    tolower_str(str2);

    if (strcmp(str1, str2) == 0) {
        printf("The strings are equal.\n");
    } else {
        printf("The strings are not equal.\n");
    }

    return 0;
}

void tolower_str(char *str) {
    while (*str != '\0') {
        *str = tolower(*str);
        str++;
    }
}

输出结果与之前相同:

The strings are equal.
方法3:使用第三方库

如果你不想自己实现比较字符串的忽略大小写方法,可以使用一些第三方库来完成。例如,在 C++ 中,可以使用 Boost 库的 iequal 函数,它与 strcasecmp 函数类似,可以比较两个字符串而忽略大小写。

以下是示例代码:

#include <iostream>
#include <boost/algorithm/string.hpp>

int main() {
    std::string str1 = "Hello, World!";
    std::string str2 = "hello, world!";

    if (boost::iequals(str1, str2)) {
        std::cout << "The strings are equal." << std::endl;
    } else {
        std::cout << "The strings are not equal." << std::endl;
    }

    return 0;
}

输出结果与之前相同:

The strings are equal.

以上介绍了三种不同的方法比较字符串而忽略大小写。您可以根据自己的需要选择最适合的方法。