题目链接:句子逆序_牛客题霸_牛客网
注意点:
1.首先考虑STL中的stack,实现栈操作,指路:C++ stack(STL stack)用法详解
2.方法二是巧用流输入
补充:cin,从键盘上进行输入并按下回车时,输入的字符就会被送到输入缓冲区进行存储,且以空白字符为分隔符。
windows:如果本行存在输入字符的情况下,在行尾加 ctrl+z 并且回车之后并不会结束输入,而是将 ctrl+z 当作一个字符来解释,将该字符当作普通字符缓冲并输出。
要结束需要在新行(即输入完成之后回车到新行)之后,输入 ctrl+z 并回车结束输入,不然会被理解为一个字段串。
linux:在新行开头,输入ctrl+d,即为 EOF,此时输入结束。
在行尾结束输入 ctrl+d 则表示输出输入缓存区的数据,此时再次输入 ctrl+d 就代表 EOF,从而结束输入。
方法一(栈):
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main(){
string str;
stack<string> stk;
while(cin>>str)
{
stk.push(str);
}
while(!stk.empty())
{
cout<<stk.top()<<" ";
stk.pop();
}
return 0;
}
方法二:
#include<iostream>
#include<string>
using namespace std;
int main(){
string str, res;
//输入流遇到空格终止
while(cin>>str)
{
//临时串是本次字符串+空格+上次的字符串,res初始为0
str += " " + res;
res = str;
}
cout << res << endl;
return 0;
}