如何在C++中迭代句子的单词?

ast*_*ths 4 c++ string loops

我的输入是"Hello World",我的目标输出是"olleH dlroW".

所以我的想法是将句子放入变量然后循环句子中的单词,反转它们中的每一个,最后将它们连接成一个新变量.

我的问题是:如何迭代句子的单词?

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

string reverseword(string word)
{
    string rword;
    int size = word.length();
    while (size >= 0)
    {
        rword+= word[size];
        size = size -1;
    }   
    return rword;
}

int main()
{ 
    string sentence;
    cout<<"Enter the word/sentence to be reversed: ";
    cin >> sentence;
    string rsentence;
    // for every word in the sentence do
    {
        rword = reverseword(word);
        rsentence = rsentence + " " + rword; 
    }
    cout<<rword;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 6

在迭代句子中的单词之前,您需要从输入中读取一个句子.这条线

cin >> sentence;
Run Code Online (Sandbox Code Playgroud)

读取句子的第一个单词,而不是整个句子.getline改为使用:

std::getline(std::cin, sentence);
Run Code Online (Sandbox Code Playgroud)

随着sentence在内存中,您可以使用它遍历字的字istream_iterator,如下所示:

stringstream ss(sentence);
for (auto w = istream_iterator<string>(ss) ; w != istream_iterator<string>() ; w++) {
    string &word = *w;
    ...
}
Run Code Online (Sandbox Code Playgroud)

演示.