string 不区分大小写比较
时间: 2023-07-26 11:47:56 浏览: 71
在 C++ 中可以使用 `std::tolower` 函数将字符串中的所有字符转换为小写,然后再进行比较。以下是一个例子:
```cpp
#include <iostream>
#include <string>
#include <algorithm> // std::transform
#include <cctype> // std::tolower
bool isEqualIgnoreCase(const std::string& str1, const std::string& str2) {
if (str1.size() != str2.size()) {
return false;
}
std::string str1Lowercase(str1.size(), ' ');
std::transform(str1.begin(), str1.end(), str1Lowercase.begin(), [](unsigned char c) {
return std::tolower(c);
});
std::string str2Lowercase(str2.size(), ' ');
std::transform(str2.begin(), str2.end(), str2Lowercase.begin(), [](unsigned char c) {
return std::tolower(c);
});
return str1Lowercase == str2Lowercase;
}
int main() {
std::string str1 = "Hello World";
std::string str2 = "hello world";
if (isEqualIgnoreCase(str1, str2)) {
std::cout << "The strings are equal (ignoring case)" << std::endl;
} else {
std::cout << "The strings are not equal (ignoring case)" << std::endl;
}
return 0;
}
```
输出:
```
The strings are equal (ignoring case)
```
在这个例子中,`isEqualIgnoreCase` 函数接受两个字符串参数,并返回一个布尔值,表示这两个字符串是否相等(不区分大小写)。这个函数的实现过程中,首先判断这两个字符串的长度是否相等,如果不相等,则这两个字符串不相等。接下来,使用 `std::transform` 函数将两个字符串中的所有字符都转换为小写,然后再进行比较。
阅读全文