How to reverse the order of the words in a sentence?

Printer-friendly versionPDF versionFor example for a given string: "This is just a test", convert it to "test a just is This".
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;
}
No votes yet