#include <iostream>
#include <string>
#include <regex>
std::string normalizeFilename(const std::string& filePath) {
std::regex pattern(R"(^.*[\\/](.*)$)");
std::smatch match;
std::string filename = filePath;
if (std::regex_match(filePath, match, pattern)) {
filename = match[1];
}
// Replace whitespace with underscores
std::regex whitespace(R"(\s+)");
filename = std::regex_replace(filename, whitespace, "_");
// Convert to lowercase
for (char& ch : filename) {
ch = std::tolower(static_cast<unsigned char>(ch));
}
return filename;
}
int main() {
std::string filePath = R"(c:\path\to\file\WITH Whitespace1 and Whitespace2.cpp)";
std::string result = normalizeFilename(filePath);
std::cout << result << std::endl;
}
/*
run:
with_whitespace1_and_whitespace2.cpp
*/