Как я могу разобрать строку и заменить все вхождения \.
чем-то?В то же время замените все \\
на \
(буквально). Примеры:
hello \. world
=> hello "." world
hello \\. world
=> hello \. world
hello \\\. world
=> hello \"." world
Первой реакцией было использование std :: replace_if, как показано ниже:
bool escape(false);
std::replace_if(str.begin(), str.end(), [&] (char c) {
if (c == '\\') {
escape = !escape;
} else if (escape && c == '.') {
return true;
}
return false;
},"\".\"");
Однако это просто меняет \.
на \"."
последовательностей,Кроме того, он не будет работать для \\
деталей при старте.
Есть ли элегантный подход к этому?Прежде чем я приступлю к взлому с циклом for и перестройкой строки?