这种反着输出的我就有点想用栈,但是呢又是一个一个单词反着输入而不是一个一个字母。一个字符串用空格做分隔符能有很明显的界限。开始想的是用一个字符串输入,然后遍历字符串,用一个数组存空格的位置,然后根据空格位置来控制每一个单词的输出。但是这种解法控制一个空格到另一个空格有点麻烦。要是用容器的话这个题就简单一些,也是实现数组的基本功能但用到vector的size的话对于输出来说就简单多了。
这是某个博主的代码,找不到链接了…
看注释应该能看懂
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
vector <string> s;
string ss;
getline(cin, ss);
string t = ""; //赋值为空,t用于提取每一个单词,并不断更新
for (int i = 0; i < ss.length(); i++)
{
if (ss[i] != ' ') //ss可以直接做字符串数组使用
t = t + ss[i];
else
{
s.push_back(t);
t = ""; //t赋值为空,等待更新
}
}
s.push_back(t); //因为最后一个单词后面没有空格所以要在push_back一次让size+1
for (int i = s.size()-1 ; i >= 0; i--) //因为vector下标从0开始所以要-1
{
if (i != 0)
cout << s[i] << " ";
else
cout << s[i];
}
return 0;
}