#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
void delete_chars_between(std::string& line, char del)
{
std::string::iterator itr_from = std::find(line.begin(), line.end(), del);
// I don't want to pass an iterator to two past the last element
if ( itr_from == line.end() )
return;
std::string::iterator itr_to = std::find(itr_from + 1, line.end(), del);
// ^^^^
while ( itr_to != line.end() )
{
itr_to = line.erase(itr_from + 1, itr_to);
itr_from = std::find(itr_to + 1, line.end(), del);
// to start another couple ^^^^
if (itr_from == line.end())
break;
itr_to = std::find(itr_from + 1, line.end(), del);
}
}
int main() {
std::vector<std::pair<std::string, char>> test{
{ "hah haaah hah hello!", 'h' },
{ "hah haaah hah hello!", 'r' },
{ "hah haaah hah hello!", 'e' },
{ "hah haaah hah hello!", 'a' }
};
for ( auto & t : test ) {
std::cout << "\noriginal: \t" << t.first << "\ndeleting \'" << t.second;
delete_chars_between(t.first, t.second);
std::cout << "\': \t" << t.first << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKCnZvaWQgZGVsZXRlX2NoYXJzX2JldHdlZW4oc3RkOjpzdHJpbmcmIGxpbmUsIGNoYXIgZGVsKQp7CiAgICBzdGQ6OnN0cmluZzo6aXRlcmF0b3IgaXRyX2Zyb20gPSBzdGQ6OmZpbmQobGluZS5iZWdpbigpLCBsaW5lLmVuZCgpLCBkZWwpOwogICAgLy8gSSBkb24ndCB3YW50IHRvIHBhc3MgYW4gaXRlcmF0b3IgdG8gdHdvIHBhc3QgdGhlIGxhc3QgZWxlbWVudAogICAgaWYgKCBpdHJfZnJvbSA9PSBsaW5lLmVuZCgpICkKICAgIAlyZXR1cm47CQogICAgc3RkOjpzdHJpbmc6Oml0ZXJhdG9yIGl0cl90byA9IHN0ZDo6ZmluZChpdHJfZnJvbSArIDEsIGxpbmUuZW5kKCksIGRlbCk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXgoKICAgIHdoaWxlICggaXRyX3RvICE9IGxpbmUuZW5kKCkgKQogICAgewogICAgCWl0cl90byA9IGxpbmUuZXJhc2UoaXRyX2Zyb20gKyAxLCBpdHJfdG8pOwoKICAgIAlpdHJfZnJvbSA9IHN0ZDo6ZmluZChpdHJfdG8gKyAxLCBsaW5lLmVuZCgpLCBkZWwpOwoJCS8vIHRvIHN0YXJ0IGFub3RoZXIgY291cGxlIF5eXl4KICAgIAlpZiAoaXRyX2Zyb20gPT0gbGluZS5lbmQoKSkKICAgICAgICAJYnJlYWs7CgogICAgCWl0cl90byA9IHN0ZDo6ZmluZChpdHJfZnJvbSArIDEsIGxpbmUuZW5kKCksIGRlbCk7CiAgICB9Cn0KCmludCBtYWluKCkgewoJc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBjaGFyPj4gdGVzdHsKCQl7ICJoYWggaGFhYWggaGFoIGhlbGxvISIsICdoJyB9LAoJCXsgImhhaCBoYWFhaCBoYWggaGVsbG8hIiwgJ3InIH0sCgkJeyAiaGFoIGhhYWFoIGhhaCBoZWxsbyEiLCAnZScgfSwKCQl7ICJoYWggaGFhYWggaGFoIGhlbGxvISIsICdhJyB9Cgl9OwoKCWZvciAoIGF1dG8gJiB0IDogdGVzdCApIHsKCQlzdGQ6OmNvdXQgPDwgIlxub3JpZ2luYWw6IFx0IiA8PCB0LmZpcnN0IDw8ICJcbmRlbGV0aW5nIFwnIiA8PCB0LnNlY29uZDsKCQlkZWxldGVfY2hhcnNfYmV0d2Vlbih0LmZpcnN0LCB0LnNlY29uZCk7CgkJc3RkOjpjb3V0IDw8ICJcJzogXHQiIDw8IHQuZmlyc3QgPDwgJ1xuJzsKCX0KCQoJcmV0dXJuIDA7Cn0=