OJ(while+cin.get()判断结束)

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

今天要记录一道看起来十分简单的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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值