我在创建一个颠倒句子顺序的函数时遇到了困难。我读过很多关于如何递归反转字母的函数,我已经成功地做到了,但我不想反转单词中的字母。我想颠倒句子中单词的位置。
例子是:
这是一个句子。
句子。 a是这个
到目前为止,这是我的代码。如何从整个句子的字母顺序反转到句子中单词的放置顺序?
当前代码的输出将提供:!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];
}
}
编辑:附加问题。如果这是一个字符数组,逻辑会有所不同吗?
最佳答案
使用 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;
}
关于c++ - 颠倒句子中的词序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42105689/