Лучше всего сделать копию в новую строку, так как это намного эффективнее, потому что в противном случае каждый раз, когда вы вставляете символ, это смещает байты, что очень неэффективно.Кроме того, вам может быть трудно поддерживать правильность ваших итераторов.
Самый простой способ - написать цикл для создания нового, хотя вы можете использовать функтор, который вставляет новую строку в каждую итерацию..
struct escaper
{
std::string& target;
explicit escaper( std::string& t ) : target( t ) {}
void operator()( char ch ) const
{
if( ch == '\'') // or switch on any character that
// needs escaping like \ itself
{
target.push_back('\\');
}
target.push_back( ch );
}
};
std::string escaped;
std::for_each( instr.begin(), instr.end(), escaper(escaped));