#include <iostream>
#include <algorithm>
std::string reverse_string_by_words(std::string str) {
reverse(str.begin(), str.end());
str.insert(str.end(), ' ');
int n = str.length();
for (int i = 0, j = 0; i < n; i++) {
if (str[i] == ' ') {
reverse(str.begin() + j, str.begin() + i);
j = i + 1;
}
}
str.pop_back();
return str;
}
int main()
{
std::string str = "C++ is a general purpose programming language";
std::string reverse = reverse_string_by_words(str);
std::cout << reverse;
return 0;
}
/*
run:
language programming purpose general a is C++
*/