#include #include #include using namespace std; static string reverseWords(string const& instr) { istringstream iss(instr); string outstr; string word; iss >> outstr; while (iss >> word) outstr = word + ' ' + outstr; return outstr; } int main() { string s = " one two \t three four "; string sret = reverseWords(s); cout << "in='" << s << "' " << "out='" << sret << "'" << endl; return 0; } #### #include #include #include #include #include using namespace std; static string reverseWords(string const& instr) { istringstream iss(instr); deque dqs; copy(istream_iterator(iss), istream_iterator(), front_inserter(dqs)); if (dqs.empty()) return ""; ostringstream oss; copy(dqs.begin(), --dqs.end(), ostream_iterator(oss, " ")); oss << dqs.back(); return oss.str(); // ... or build string directly instead of using ostringstream // string outstr(dqs.front()); // for (deque::const_iterator i = ++dqs.begin(); i != dqs.end(); ++i) // outstr += ' ' + *i; // return outstr; } int main() { string s = " one two \t three four "; string sret = reverseWords(s); cout << "in='" << s << "' " << "out='" << sret << "'" << endl; return 0; }