今天要记录一道看起来十分简单的OJ题目,但开始对于cin的一些操作忘得差不多了,没做出来,故记下来给自己提个醒。
描述
给出包含N个单词的一行输入,输出N行。第一行和输入一样。每次输出过一行后,这一行的第一个单词在下一行被放到最后。
输入
包含N个单词的字符串,单词以一个空格分开。N不在输入中给出,你需要计算单词的数量来获得。字符串包含的字符数小于100。
输出
输出N行。 第一行和输入相同。 剩下的N-1行中,上一行的第一个单词被放到最后。每个单词之间有一个空格。
样例输入
Please think about it carefully
样例输出
Please think about it carefully
think about it carefully Please
about it carefully Please think
it carefully Please think about
carefully Please think about it
思路一
开始的时候,用while(cin>>str)来读每一个单词,但是cin不遇到EOF或者错误输入是不会停止的,所以光靠cin>>这种格式化的输入操作是不够的,考虑加上cin.get()这种非格式化的输入操作,在读取一个字符串后,用一次cin.get(),看是不是’\n’,如果是,就break。
代码一
#include "stdafx.h"
#include <iostream>
#include <queue>
#include <string>
using namespace std;
void display(const

本文记录了一道C++在线判题(OJ)问题,涉及如何处理输入并输出。当遇到包含多个单词的输入行时,需要输出每一行,且逐行将第一个单词移到末尾。讲解了两种解决方案:一是结合`while`循环与`cin.get()`判断输入结束,二是使用`istringstream`处理输入。还讨论了C++中控制输入格式和未格式化的输入/输出操作。
最低0.47元/天 解锁文章
661

被折叠的 条评论
为什么被折叠?



