#include <iostream>
#include <string>
#include <algorithm>
#include <assert.h>
void RemoveCharacterFromString(char character_for_remove, std::string &string) {
auto it = std::remove_if(std::begin(string), std::end(string),
[=](char c) { return c == character_for_remove; });
string.erase(it, std::end(string));
}
void RemoveAllCharactersInRangeFromString(char from, char to,
std::string &string) {
assert(from <= to);
for (auto curr_character = from; curr_character <= to; ++curr_character) {
RemoveCharacterFromString(curr_character, string);
}
}
char *StringToCharArray(const std::string &str, char *s) {
std::copy(std::begin(str), std::end(str), s);
s[str.size()] = '\0';
return s;
}
char *Del_Useless(char *s) {
std::string string(s);
RemoveAllCharactersInRangeFromString('j', 'z', string);
RemoveAllCharactersInRangeFromString('J', 'Z', string);
return StringToCharArray(string, s);
}
int main() {
char raw_str[100] = "aaa bbb ccc ddd ccc fff eee ggg fff jj asdf z asdf";
std::cout << "Raw string : " << raw_str << '\n';
auto cleaned_string = Del_Useless(raw_str);
std::cout << "after remove: " << cleaned_string << '\n';
std::cout << "Raw string : " << raw_str << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8YXNzZXJ0Lmg+Cgp2b2lkIFJlbW92ZUNoYXJhY3RlckZyb21TdHJpbmcoY2hhciBjaGFyYWN0ZXJfZm9yX3JlbW92ZSwgc3RkOjpzdHJpbmcgJnN0cmluZykgewogIGF1dG8gaXQgPSBzdGQ6OnJlbW92ZV9pZihzdGQ6OmJlZ2luKHN0cmluZyksIHN0ZDo6ZW5kKHN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFs9XShjaGFyIGMpIHsgcmV0dXJuIGMgPT0gY2hhcmFjdGVyX2Zvcl9yZW1vdmU7IH0pOwogIHN0cmluZy5lcmFzZShpdCwgc3RkOjplbmQoc3RyaW5nKSk7Cn0KCnZvaWQgUmVtb3ZlQWxsQ2hhcmFjdGVyc0luUmFuZ2VGcm9tU3RyaW5nKGNoYXIgZnJvbSwgY2hhciB0bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgJnN0cmluZykgewogIGFzc2VydChmcm9tIDw9IHRvKTsKICBmb3IgKGF1dG8gY3Vycl9jaGFyYWN0ZXIgPSBmcm9tOyBjdXJyX2NoYXJhY3RlciA8PSB0bzsgKytjdXJyX2NoYXJhY3RlcikgewogICAgUmVtb3ZlQ2hhcmFjdGVyRnJvbVN0cmluZyhjdXJyX2NoYXJhY3Rlciwgc3RyaW5nKTsKICB9Cn0KCmNoYXIgKlN0cmluZ1RvQ2hhckFycmF5KGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIsIGNoYXIgKnMpIHsKICBzdGQ6OmNvcHkoc3RkOjpiZWdpbihzdHIpLCBzdGQ6OmVuZChzdHIpLCBzKTsKICBzW3N0ci5zaXplKCldID0gJ1wwJzsKICByZXR1cm4gczsKfQoKY2hhciAqRGVsX1VzZWxlc3MoY2hhciAqcykgewogIHN0ZDo6c3RyaW5nIHN0cmluZyhzKTsKICBSZW1vdmVBbGxDaGFyYWN0ZXJzSW5SYW5nZUZyb21TdHJpbmcoJ2onLCAneicsIHN0cmluZyk7CiAgUmVtb3ZlQWxsQ2hhcmFjdGVyc0luUmFuZ2VGcm9tU3RyaW5nKCdKJywgJ1onLCBzdHJpbmcpOwogIHJldHVybiBTdHJpbmdUb0NoYXJBcnJheShzdHJpbmcsIHMpOwp9CgppbnQgbWFpbigpIHsKICBjaGFyIHJhd19zdHJbMTAwXSA9ICJhYWEgYmJiIGNjYyBkZGQgY2NjIGZmZiBlZWUgZ2dnIGZmZiBqaiBhc2RmICB6IGFzZGYiOwogIHN0ZDo6Y291dCA8PCAiUmF3IHN0cmluZyAgOiAiIDw8IHJhd19zdHIgPDwgJ1xuJzsKICBhdXRvIGNsZWFuZWRfc3RyaW5nID0gRGVsX1VzZWxlc3MocmF3X3N0cik7CiAgc3RkOjpjb3V0IDw8ICJhZnRlciByZW1vdmU6ICIgPDwgY2xlYW5lZF9zdHJpbmcgPDwgJ1xuJzsKICBzdGQ6OmNvdXQgPDwgIlJhdyBzdHJpbmcgOiAgIiA8PCByYXdfc3RyIDw8ICdcbic7Cn0K