std::string reverse_words(const std::string &strInput)
{
using namespace std;
string result;
string::const_reverse_iterator iterWordStart, iterWordEnd;
bool bBufferMode = true;
iterWordStart = iterWordEnd = strInput.rbegin();
for(; iterWordStart != strInput.rend(); ++iterWordStart) {
if(!(isalpha(*iterWordStart) && bBufferMode)) {
reverse_copy(iterWordEnd, iterWordStart, inserter(result, result.end()));
iterWordEnd = iterWordStart;
bBufferMode = !bBufferMode;
}
}
reverse_copy(iterWordEnd, iterWordStart, inserter(result, result.end()));
return result;
}
{
using namespace std;
string result;
string::const_reverse_iterator iterWordStart, iterWordEnd;
bool bBufferMode = true;
iterWordStart = iterWordEnd = strInput.rbegin();
for(; iterWordStart != strInput.rend(); ++iterWordStart) {
if(!(isalpha(*iterWordStart) && bBufferMode)) {
reverse_copy(iterWordEnd, iterWordStart, inserter(result, result.end()));
iterWordEnd = iterWordStart;
bBufferMode = !bBufferMode;
}
}
reverse_copy(iterWordEnd, iterWordStart, inserter(result, result.end()));
return result;
}