I need to reverse string but to keep only one space between words.
EXAMPLE:
"  na vrh   brda vrbaa   mrdaa!!!   "
"!!!aadrm aabrv adrb hrv an"
Code:
#include <iostream>
#include <string>
std::string ReverseOneSpace(std::string s) {
  std::string str = s;
  int j = 0;
  for (int i = s.length() - 1; i >= 0; i--) {
    // skip spaces
    while (s[i] == ' ' && i >= 0)
      i--;
    while (s[i] != ' ' && i >= 0) {
      str[j] = s[i];
      j++;
      i--;
    }
    // add only one space
    if (s[i] == ' ') str[j] = ' ';
    j++;
    if (i == 0) break;
  }
  return str;
}
int main() {
  std::string s = "  na vrh   brda vrbaa   mrdaa!!!   ";
  std::string str = ReverseOneSpace(s);
  std::cout << "\"" << str << "\"" << std::endl;
  std::cout << "\"" << "!!!aadrm aabrv adrb hrv an" << "\"";
  return 0;
}
OUTPUT:
"!!!aadrm aabrv adrb hrv an aa!!!   " // my output
"!!!aadrm aabrv adrb hrv an" // correct
Why do I have some extra characters after the string was reversed?
 
     
     
    