实现一个不区分大小写的strstr函数
时间: 2024-06-16 22:07:27 浏览: 123
实现一个不区分大小写的strstr函数可以通过以下步骤来完成:
1. 首先,将目标字符串和模式字符串都转换为小写或大写字母,以便进行大小写不敏感的比较。
2. 使用两个指针,一个指向目标字符串,一个指向模式字符串。
3. 在目标字符串中循环遍历,直到找到与模式字符串的第一个字符相等的字符。
4. 从当前位置开始,比较目标字符串和模式字符串中的字符,如果不相等,则继续遍历目标字符串。
5. 如果找到了与模式字符串匹配的子串,则返回该子串在目标字符串中的起始位置。
6. 如果遍历完整个目标字符串都没有找到匹配的子串,则返回NULL。
下面是一个示例代码实现:
```c++
#include <iostream>
#include <cstring>
#include <cctype>
char* stristr(const char* haystack, const char* needle) {
if (haystack == nullptr || needle == nullptr) {
return nullptr;
}
int haystackLen = strlen(haystack);
int needleLen = strlen(needle);
for (int i = 0; i <= haystackLen - needleLen; i++) {
int j;
for (j = 0; j < needleLen; j++) {
if (tolower(haystack[i + j]) != tolower(needle[j])) {
break;
}
}
if (j == needleLen) {
return const_cast<char*>(&haystack[i]);
}
}
return nullptr;
}
int main() {
const char* haystack = "Hello, World!";
const char* needle = "world";
char* result = stristr(haystack, needle);
if (result != nullptr) {
std::cout << "Found at position: " << result - haystack << std::endl;
} else {
std::cout << "Not found." << std::endl;
}
return 0;
}
```
阅读全文