Me parece que no tomas en cuenta que la cadena a buscar puede aparecer una o varias veces en la misma línea (reemp), además podrías evitar el uso del vector.
Ejemplo:
Código C++:
Ver original#include <iostream>
#include <string>
using namespace std;
void replaceAll(string &s, const string &what, const string &with){
string::size_type start = 0;
string::size_type whatsz = what.size();
string::size_type withsz = with.size();
while(start = s.find(what, start), start != string::npos){
s.replace(start, whatsz, with);
start += withsz;
}
}
int main(){
string what, with;
getline(cin, what);
getline(cin, with);
string line;
while(getline(cin, line)){
replaceAll(line, what, with);
cout << line << endl;
}
return 0;
}
Saludos.