C++字符串忽略大小写比较
时间: 2023-09-12 21:13:19 浏览: 229
在C++中,可以使用标准库函数`stricmp()`或`stricmp()`来进行字符串的忽略大小写比较。
```cpp
#include <iostream>
#include <cstring>
int main() {
char str1[] = "Hello";
char str2[] = "hello";
if (stricmp(str1, str2) == 0) {
std::cout << "Strings are equal (case insensitive)\n";
} else {
std::cout << "Strings are not equal (case insensitive)\n";
}
return 0;
}
```
输出结果为:
```
Strings are equal (case insensitive)
```
如果使用`stricmp()`,则忽略字符串中字母的大小写,如果相等返回0;否则返回一个非0值。注意,`stricmp()`是非标准函数,建议使用`strcasecmp()`代替。`strcasecmp()`是标准库函数,其用法与`stricmp()`相同。
相关问题
字符串忽略大小写比较 C++写法
可以使用C++ STL库中的`std::tolower`函数将字符串转换为小写形式,然后再比较两个字符串是否相等。以下是一个示例代码:
```c++
#include <iostream>
#include <string>
#include <algorithm> // for std::transform
bool compareIgnoreCase(const std::string& str1, const std::string& str2) {
if (str1.size() != str2.size()) {
return false;
}
std::string str1Lower, str2Lower;
std::transform(str1.begin(), str1.end(), std::back_inserter(str1Lower), ::tolower);
std::transform(str2.begin(), str2.end(), std::back_inserter(str2Lower), ::tolower);
return str1Lower == str2Lower;
}
int main() {
std::string str1 = "Hello, World!";
std::string str2 = "hello, world!";
if (compareIgnoreCase(str1, str2)) {
std::cout << "The two strings are equal (ignoring case)." << std::endl;
} else {
std::cout << "The two strings are not equal (ignoring case)." << std::endl;
}
return 0;
}
```
在上面的代码中,`compareIgnoreCase`函数将两个字符串转换为小写形式,然后进行比较。`std::transform`函数可以将一个字符串中的每个字符转换为另一个字符,这里使用了`::tolower`函数进行转换。最后比较两个转换后的字符串是否相等。
c++忽略大小写的字符串比较
在C++中,要实现忽略大小写的字符串比较,可以通过将两个字符串都转换为同一大小写形式(全部转换为大写或全部转换为小写),然后再进行比较。这通常可以通过使用标准库中的函数或算法来完成。
下面是一个简单的例子,使用`<algorithm>`和`<cctype>`库中的函数来实现忽略大小写的字符串比较:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype> // for std::tolower
bool compareIgnoringCase(const std::string& str1, const std::string& str2) {
if (str1.size() != str2.size()) {
return false;
}
return std::equal(str1.begin(), str1.end(), str2.begin(),
[](unsigned char a, unsigned char b) { return std::tolower(a) == std::tolower(b); });
}
int main() {
std::string str1 = "Hello";
std::string str2 = "hello";
if (compareIgnoringCase(str1, str2)) {
std::cout << "字符串相同(忽略大小写)" << std::endl;
} else {
std::cout << "字符串不同(忽略大小写)" << std::endl;
}
return 0;
}
```
这个例子中定义了一个`compareIgnoringCase`函数,它接受两个`std::string`类型的参数,并使用`std::equal`来比较两个字符串。比较过程中使用了`std::tolower`来将每个字符转换为小写,从而实现忽略大小写的比较。
阅读全文