En el mismo
for se puede. Como ya esta muy largo y en vista que no ha podido solucionar con mucho éxito el problema le cedo este código para que realice sus pruebas.
Código C++:
Ver original#include <iostream>
#include <string>
using namespace std;
int main(int argc, char** argv) {
string str = "Hola mundo como estas";
char c = 'a';
string reemplazo;
for (int i = 0; i < (int) str.length(); ++i) {
if (str[i] == c) {
reemplazo.assign(1, c);
reemplazo.insert(1, "o");
reemplazo.insert(2, 1, c);
str.replace(i, 1, reemplazo);
i+=2;//Aquí esta el truco para impedir que el for sea infinito
}
}
cout << str << endl;
return 0;
}