Se me ocurre algo asi:
Código C++:
Ver original#include <iostream>
#include <vector>
using namespace std;
int main(){
int i, ban = 0, ban2 = 0;
size_t aux;
string temp;
string texto;
vector <string> no_permitidas;
vector <string> reemplazarx;
cout << "Introduzca una cadena de texto: ";
getline(cin, texto);
cout << endl;
cout << "Para finlizar ingreso de palabras escriba -f" << endl << endl;
while(ban == 0){
cout << "Palabra ha reemplazar: ";
cin >> temp;
if(temp == "-f"){
ban = 1;
}else{
for(i = 0; i < no_permitidas.size() ; i++){
aux = no_permitidas[i].rfind(temp);
if(aux!=string::npos){
ban2 = 1;
break;
}
}
if(ban2 != 1){
no_permitidas.push_back(temp);
cout << "Palabra de reemplazo:";
cin >> temp;
reemplazarx.push_back(temp);
}else{
cout << "Esta palabra ya fue ingresada." << endl;
ban2 = 0;
}
}
}
for(i = 0; i < no_permitidas.size() ; i++){
aux = texto.rfind(no_permitidas[i]);
if(aux!=string::npos){
texto.replace(aux,no_permitidas[i].length(),reemplazarx[i]);
}
}
cout << endl << texto << endl << endl;
return 0;
}