fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. #include <assert.h>
  5.  
  6. struct SameCharacter {
  7. SameCharacter(char character) : character(character) {}
  8. bool operator()(char c) { return c == character; }
  9.  
  10. const char character;
  11. };
  12.  
  13. void RemoveCharacterFromString(char character_for_remove, std::string &string) {
  14. std::string::iterator it = std::remove_if(
  15. string.begin(), string.end(), SameCharacter(character_for_remove));
  16. string.erase(it, string.end());
  17. }
  18.  
  19. void RemoveAllCharactersInRangeFromString(char from, char to,
  20. std::string &string) {
  21. assert(from <= to);
  22. for (char curr_character = from; curr_character <= to; ++curr_character) {
  23. RemoveCharacterFromString(curr_character, string);
  24. }
  25. }
  26.  
  27. char *StringToCharArray(const std::string &str, char *s) {
  28. std::copy(str.begin(), str.end(), s);
  29. s[str.size()] = '\0';
  30. return s;
  31. }
  32.  
  33. char *Del_Useless(char *s) {
  34. std::string string(s);
  35. RemoveAllCharactersInRangeFromString('j', 'z', string);
  36. RemoveAllCharactersInRangeFromString('J', 'Z', string);
  37. return StringToCharArray(string, s);
  38. }
  39.  
  40. int main() {
  41. char raw_str[100] = "aaa bbb ccc ddd ccc fff eee ggg fff jj asdf z asdf";
  42. std::cout << "Raw string : " << raw_str << '\n';
  43. char *cleaned_string = Del_Useless(raw_str);
  44. std::cout << "after remove: " << cleaned_string << '\n';
  45. std::cout << "Raw string : " << raw_str << '\n';
  46. }
Success #stdin #stdout 0s 3276KB
stdin
Standard input is empty
stdout
Raw string  : aaa bbb ccc ddd ccc fff eee ggg fff jj asdf  z asdf
after remove: aaa bbb ccc ddd ccc fff eee ggg fff  adf   adf
Raw string :  aaa bbb ccc ddd ccc fff eee ggg fff  adf   adf