📜  cpp 比较字符串 - C++ (1)

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

C++:比较字符串

在 C++ 中,可以使用许多方法来比较字符串。在本文中,我们将介绍几种使用 C++ 比较字符串的方法。

方法一:strcmp 函数

strcmp 函数可以用来比较两个字符串。该函数比较字符序列 str1 和 str2,并根据其比较结果返回整数值。如果返回值为 0,则表示 str1 和 str2 相等。

#include <iostream>
#include <cstring>

int main() {
    char str1[] = "hello";
    char str2[] = "world";

    int result = std::strcmp(str1, str2);
    if (result == 0) {
        std::cout << "str1 and str2 are equal" << std::endl;
    } else if (result < 0) {
        std::cout << "str1 is less than str2" << std::endl;
    } else {
        std::cout << "str2 is less than str1" << std::endl;
    }

    return 0;
}
方法二:string 类型比较

在 C++ 中,可以使用 string 类型来表示字符串。string 类型重载了运算符以支持字符串的比较。可以使用比较运算符 ==、!=、<、>、<= 和 >= 来比较两个 string 类型字符串的大小。

#include <iostream>
#include <string>

int main() {
    std::string str1 = "hello";
    std::string str2 = "world";

    if (str1 == str2) {
        std::cout << "str1 and str2 are equal" << std::endl;
    } else if (str1 < str2) {
        std::cout << "str1 is less than str2" << std::endl;
    } else {
        std::cout << "str2 is less than str1" << std::endl;
    }

    return 0;
}
方法三:strcoll 函数

strcoll 函数是 strcmp 函数的改进版。它使用本地化规则来比较字符串,可以处理不同语言中的字符排序问题。

#include <iostream>
#include <cstring>
#include <locale.h>

int main() {
    char str1[] = "Ä";
    char str2[] = "A";

    setlocale(LC_ALL, "");

    int result = std::strcoll(str1, str2);
    if (result == 0) {
        std::cout << "str1 and str2 are equal" << std::endl;
    } else if (result < 0) {
        std::cout << "str1 is less than str2" << std::endl;
    } else {
        std::cout << "str2 is less than str1" << std::endl;
    }

    return 0;
}
总结

在 C++ 中,比较字符串有多种方法。可以使用 strcmp 函数比较 C 风格字符串,使用 string 类型的比较运算符比较 string 类型字符串,或者使用 strcoll 函数处理多语言字符排序问题。无论哪种方法,都值得学习和掌握。