我正在编写一个程序,颠倒字符串中单词的顺序。如果有一个句子,“I love纽约!",它应该改为“!York New love I”。我颠倒字符串中单词的顺序,方法是存储最后一个单词,然后添加空格,再存储倒数第二个单词,依此类推。但是当我打印输出时,它会在打印前添加一个空格。
#include<iostream>
#include<string>
#include<vector>
#include<sstream>
using namespace std;
string reverse(string s){
vector<string> temp;
string words;
stringstream ss(s);
while (ss>>words)
{
temp.push_back(words);
}
string ans;
for (int i = words.size()-1; i >=0; --i)
{
if (i!=words.size()-1)
{
ans+= " ";
}
ans+=temp[i];
}
return ans;
}
int main(){
string s("My name is Saad Arshad ");
cout<<reverse(s);
return 0;
}
输出:“阿尔沙德·萨阿德是我的名字”我认为单词的大小大于临时的,这就是为什么它发生,但我仍然需要更多的澄清。
1条答案
按热度按时间zkure5ic1#
对于注解来说太长了。所以我把它写在这里。在你的
for
循环中。在你构建新字符串的地方,你把“words”和“temp”弄混了。请参阅下面的更正版本: