1009:说反话


cin >> 读取字符串时不能读取空格
string s;
cin >> s; // 输入 "hello world"
cout << s; // 输出 "hello"(空格后面的被丢弃)
如何读取带空格的整行?getline()
string s;
getline(cin, s); // 读取整行,包括空格
cout << s; // 输出 "hello world"
cpp
#include<bits/stdc++.h>
using namespace std;
int main() {
stack<string> s; // 创建一个字符串类型的栈 s,用于存储输入的单词
string n, i; // 定义两个字符串变量:n 用于接收输入,i 用于临时存储栈顶元素
// 循环读取:不断从标准输入读取字符串,直到文件结束(EOF)
// cin >> n 会返回 cin 对象,当读取失败(如遇到 EOF)时,条件为 false
while(cin >> n) { // 每次读取一个单词(以空格或换行分隔)
s.push(n); // 将读取到的单词 n 压入栈顶
}
// 循环结束后,栈中顺序(从底到顶)与输入顺序相反:
// 第一个输入的单词在栈底,最后一个输入的单词在栈顶
i = s.top(); // 获取栈顶元素(最后输入的单词),赋值给 i
cout << i; // 输出第一个单词(栈顶元素),不加空格
s.pop(); // 弹出已输出的栈顶元素
// 循环输出剩余元素(从栈顶到栈底)
while(!s.empty()) { // 当栈不为空时继续循环
cout << " " << s.top(); // 先输出一个空格,再输出栈顶元素
s.pop(); // 弹出已输出的栈顶元素
}
// 循环结束后,所有单词已按输入顺序的逆序输出
return 0;
}