std::string find_text = "[sd]"; // to, czego szukamy w nazwie pliku.
std::string replace_text = "_"; // to, czym zastępujemy.
std::string file_name;
std::string result;
/* przykładowa lista plików */
std::list<std::string> paths = { "d:\\aaa\\asdsfg.txt", "d:\\aaa\\sddgg.txt", "d:\\aaa\\asfg.txt" };
std::regex re(find_text);
for(auto &file_path : paths)
{
size_t p1 = file_path.find_last_of('\\');
size_t p2 = file_path.find_last_of('.');
if(p1 == std::string::npos) p1 = 0; else ++p1;
if(p2 == std::string::npos || p2 < p1) p2 = file_path.size();
file_name.assign(file_path, p1, p2 - p1);
result.erase(result.begin(), result.end());
std::regex_replace(std::back_insert_iterator<std::string>(result), file_name.begin(), file_name.end(), re, replace_text);
file_path.replace(p1, p2 - p1, result);
}
for(auto &file_path : paths)
std::cout << file_path << '\n';