#include <iostream>
#include <string>
#include <algorithm>
// Function to convert a string to lowercase
std::string toLower(const std::string& str) {
std::string lowerStr = str;
std::transform(lowerStr.begin(), lowerStr.end(), lowerStr.begin(),
[](unsigned char c) { return std::tolower(c); });
return lowerStr;
}
// Case-insensitive substring search function
const char* strstrcaseinsensitive(const char* haystack, const char* needle) {
std::string haystackStr = haystack;
std::string needleStr = needle;
std::string lowerHaystack = toLower(haystackStr);
std::string lowerNeedle = toLower(needleStr);
size_t pos = lowerHaystack.find(lowerNeedle);
if (pos != std::string::npos) {
return haystack + pos;
}
return nullptr;
}
int main() {
const char* haystack = "C++ is a general-purpose programming language";
const char* needle = "PROGRAMMING";
const char* result = strstrcaseinsensitive(haystack, needle);
if (result) {
std::cout << "Found: " << result << std::endl;
} else {
std::cout << "Not Found" << std::endl;
}
}
/*
run:
Found: programming language
*/