单词顺序颠倒


直接用双指针从后面开始,到空格了就输出,再更新。

然后发现老是只输出一个单词,改了又改,改的通俗易懂,发现还是只输出第一个单词。

然后去搜了一下答案,发现是处理字符串的输入有问题,cin>>s(string),会以空格为结束标志

在这题中就出了岔子。

#include
    #include<string>
    #include
    using namespace std;
    int main()
    {
        string s;
        getline(cin,s);
        int k=s.size();
        vector<string>a;//可以不用,直接从后面开始
        int j=0;
        int i=0;
        while(i<k)
        {
            while(s[i]!=' '&&i<k)
            {
                i++;
            }
            string b;
            b=s.substr(j,i-j);
            a.push_back(b);
            j=i;
            j++;
            i++;
        }
        for(vector<string>::reverse_iterator it=a.rbegin();it!=a.rend();it++)
        {
            cout<<*it;
            if(it!=a.rend()-1) cout<<" ";
        }
     }