#include <cstddef>
#include <iostream>
#include <string>
using namespace std;
void erase_all1(string& buffer, const string& sequ) {
size_t pos = 0;
for (;;) {
pos = buffer.find(sequ, pos);
if (pos == string::npos)
break;
else
buffer.erase(pos, sequ.size());
}
}
string erase_all2(const string& buffer, const string& sequ) {
string result = buffer;
size_t pos = 0;
for (;;) {
pos = result.find(sequ, pos);
if (pos == string::npos)
break;
else
result.erase(pos, sequ.size());
}
return(result);
}
string erase_all3(string buffer, const string& sequ) {
size_t pos = 0;
for (;;) {
pos = buffer.find(sequ, pos);
if (pos == string::npos)
break;
else
buffer.erase(pos, sequ.size());
}
return(buffer);
}
void getlineFixed(istream& in, string &s, char eol = '\n') {
char ch;
s = "";
while (in.get(ch) && ch != eol) s += ch;
}
int main() {
string line, word;
do {
cout << "Please enter the line of text to process:" << endl;
getlineFixed(cin, line);
} while (line.empty());
do {
cout << "Please enter the sequence to erase for:" << endl;
getlineFixed(cin, word);
} while (word.empty());
cout << "IN" << line << endl;
cout << "#3" << erase_all3(line, word) << endl;
cout << "IN" << line << endl;
cout << "#2" << erase_all2(line, word) << endl;
cout << "IN" << line << endl;
cout << "#1";
erase_all1(line, word);
cout << line << endl;
cout << "IN" << line << endl;
return(0);
}