在句子中反转单词顺序

Tou*_*pad 0 c++ recursion

我在创建一个颠倒句子顺序的函数时遇到了困难.我已经阅读了许多关于如何递归反转周围字母的函数,我已经成功地完成了这些,但我不想反转字母中的字母.我想颠倒句子中单词的位置.

示例是:

这是一句话.

句子.这是

到目前为止这是我的代码.如何从整个句子的字母顺序转换到句子中单词的放置顺序?

当前代码的输出将提供:!dlroW olleH

void reverse(const std::string str)
{
    int length = str.size();
    if(length > 0)
    {
        reverse(str.substr(0,length-1));
        std::cout << str[0];

    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:其他问题.如果这是一个char数组,逻辑会不同吗?

R S*_*ahu 5

通过使用std::istringstream和辅助函数简化您的逻辑.下面的程序适合我.

#include <sstream>
#include <iostream>

void reverse(std::istringstream& stream)
{
   std::string word;
   if ( stream >> word )
   {
      reverse(stream);
      std::cout << word << " ";
   }
}

void reverse(const std::string str)
{
   std::istringstream stream(str);
   reverse(stream);
   std::cout << std::endl;
}

int main(int argc, char** argv)
{
   reverse(argv[1]);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)