#include <iostream>
#include <string>
using namespace std;
void usuwanie(string& x, int i) { // & daje oryginalny string, a nie kopię
x.erase(i, 1);
}
int main()
{
char c;
string wyraz;
for (int i = 0; i < 10; i++) {
cin >> c >> wyraz;
for (int j = 0; j < wyraz.length(); j++) {
if (wyraz[j] == c) {
usuwanie(wyraz, j);
j--; // po usunieciu literki następna do sprawdzenia spada na poprzednie miejsce, więc trzeba cofnąć iterator
}
}
cout << wyraz << "\n";
}
}
Można zrobić nawet lepiej znajdując wszystkie literki i przesuwając je na koniec stringa(remove) i dopiero wtedy usunąć wszystko od razu:
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
char c;
std::string word;
while (std::cin >> c >> word) {
word.erase(std::remove(word.begin(), word.end(), c), word.end());
std::cout << word << "\n";
}
}