在 C++ 中比较两个字符串时如何忽略文本大小写?

How to ignore text case while comparing two strings in C++?

我是初学者。我正在尝试创建一个程序来比较两个字符串 按字母顺序 。但它会忽略文本大小写。我面临着问题。如何忽略 C++ 中的文本大小写?

#include <iostream>

using namespace std;

int main() {

    string a, b;

    cin >> a;
    cin >> b;

    if ( a > b) {
        cout << "1";
    }
    else if ( a < b) {
        cout << "-1";
    }
    else if (a == b) {
        cout << "0";
    }

}

您可以在比较之前将两个字符串都转换为小写 std::tolower:

for (auto& c : a) c = std::tolower(static_cast<unsigned char>(c));
for (auto& c : b) c = std::tolower(static_cast<unsigned char>(c));

我建议使用循环并使用 std::toupperstd::tolower

将两个字符串转换为小写或小写
for(const auto& i:a)x=std::tolower(x);
for(const auto& i:a)x=std::tolower(x);

使用 case-insensitive 比较函数,例如 C 的 strcmpi(),或 Windows 的 CompareStringA()NORM_IGNORECASE 标志,或 Posix 的 strcasecmp(),等等