单词顺序颠倒
直接用双指针从后面开始,到空格了就输出,再更新。
然后发现老是只输出一个单词,改了又改,改的通俗易懂,发现还是只输出第一个单词。
然后去搜了一下答案,发现是处理字符串的输入有问题,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<<" "; } }