我在创建一个颠倒句子顺序的函数时遇到了困难.我已经阅读了许多关于如何递归反转周围字母的函数,我已经成功地完成了这些,但我不想反转字母中的字母.我想颠倒句子中单词的位置.
示例是:
这是一句话.
句子.这是
到目前为止这是我的代码.如何从整个句子的字母顺序转换到句子中单词的放置顺序?
当前代码的输出将提供:!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数组,逻辑会不同吗?
通过使用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)