cin 回车结束输入

一般来说, cin遇到空格和回车都会忽略, 但昨天做一道ccf的试题, 要求是输入一些数据, 这些数据长度不定, 而且不能输入别的数据(比如特定的结束符或者ctrl+z), 这就要求输入必须能识别两个回车并自动结束…… 结果我没做出来


嗯, 回来之后查了一下这个问题, 这个问题还是蛮简单的, 一般来说, 你在cmd里输入的数据会保存到缓冲区, 然后遇到回车或者eof就会被cin读入, cin又会忽略换行和空格, 所以, 打两个空格停止, 需要一点特殊设置。


一下是代码, 改程序每行输入两个数字, 然后回车, 下一行继续输入两个数字, 或者连续输入两个回车, 这样结束。


#include <stdlib.h>
#include <stdio.h>

#include <iostream>
using namespace std;

#include <string>
#include <vector>

int main()
{
	while(1)
	{
		// 每行输入两个数字, 然后回车
		int m, n;
		cin>>m>>n;

		// 读取换行符
		char c = cin.get();

		// 检测下一个是不是回车
		char c2 = cin.get();

		// 是则结束
		if (c2 == '\n')
		{
			break;
		}
		else
		{
			// 如果不是回车, 那么还是会两个数字
			char b[255];

			// 得到剩余的输入
			cin.getline(b, 255);

			// 整行输入
			// 注意, 这时候回车也被读取了
			// 但回车不存在于b中……
			for (int i = strlen(b)+1; i> 0; i--)
			{
				b[i] = b[i-1];
			}
			b[0] = c2;
		}
	}


	system("pause");
	return 0;
}

over。

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值