本题比较容易,这里主要是复习一下 istringstream 的用法 1. 问题描述 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。 字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串, 单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。 输出格式: 每个测试用例的输出占一行,输出倒序后的句子。 输入样例: Hello World Here I Come 输出样例: Come I Here World Hello 2. 思路分析 用一个栈直接保存读入的单词,再出栈即可 利用istringstream会比较方便,这里需要注意 * 如何判断何时读取结束 * 需要添加头文件 #include <sstream> 3. 代码实现 #include <iostream> #include <sstream> #include <string> #include <stack> using namespace std; int main() { string line; getline(cin, line); stack<string> ans; istringstream input(line); string tmp; while (input >> tmp) { // 读取放在cond里面,读取完成跳出循环 ans.push(tmp); } while (!ans.empty()) { string tmp = ans.top(); if (int(ans.size()) == 1) { // 调整输出格式 cout << tmp; } else { cout << tmp << " "; } ans.pop(); } return 0; }