#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
void rtrim(std::string &s) {
s.erase(find_if(s.rbegin(), s.rend(), [](int ch) {
return !isspace(ch);
}).base(), s.end());
}
std::string reverseOrderOfWordsInString(std::string &s) {
std::vector <std::string> tokens;
std::stringstream sst(s);
std::string word;
while(getline(sst, word, ' ')) {
tokens.push_back(word);
}
reverse(tokens.begin(), tokens.end());
s = "";
for (int i = 0; i < tokens.size(); i++) {
s += tokens[i] + " ";
}
rtrim(s);
return s;
}
int main()
{
std::string s = "c++ c java php c#";
s = reverseOrderOfWordsInString(s);
std::cout << s;
}
/*
run:
c# php java c c++
*/