📅  最后修改于: 2023-12-03 14:39:55.625000             🧑  作者: Mango
在C++中,比较两个字符串时可以使用运算符"=="或者函数strcmp来完成。但是这些方法都是区分大小写的,也就是说大小写不同的字符串会被判定为不相等。如果我们想要在不区分大小写的情况下比较字符串,该怎么做呢?
不用担心,C++标准库提供了一个方便的函数来比较字符串大小写不敏感 - strcasecmp。这个函数不仅在Linux和MacOS平台下可用,在Windows平台上也有对应的函数,就是_stricmp。以下是它们的函数原型:
int strcasecmp(const char* str1, const char* str2);
int _stricmp(const char* str1, const char* str2);
这两个函数都是忽略大小写比较两个字符串,如果两个字符串相等,则返回0;如果第一个字符串小于第二个字符串,则返回一个负数;如果第一个字符串大于第二个字符串,则返回一个正数。
示例:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str1[] = "Hello, World!";
char str2[] = "hello, world!";
if (strcasecmp(str1, str2) == 0) {
cout << "两个字符串相等" << endl;
} else {
cout << "两个字符串不相等" << endl;
}
return 0;
}
输出结果为:
两个字符串相等
可以看到,通过strcasecmp函数,我们实现了大小写不敏感的字符串比较。
另外,如果你需要在项目中经常使用这个函数,可以编写封装函数来方便地调用:
#include <cstring>
int compareIgnoreCase(const char* str1, const char* str2) {
return strcasecmp(str1, str2);
}
这样我们就可以像使用strcmp函数一样使用compareIgnoreCase函数进行大小写不敏感的字符串比较了。
在C++中,比较字符串大小写不敏感很简单,只要用strcasecmp函数或者其他平台下对应的函数就可以了。