当前位置: 首页 > 编程日记 > 正文

C++利用cin输入时检测回车的方法

今天做TJU的OJ ,其中一道题是先读入一个字符串,再读入一个整数,循环往复,直到字符串是空,也就是说回车键结束循环。

但是cin对空格和回车都不敏感,都不影响继续读入数据,所以需要一种新的方式检测回车。

方法一:利用getchar()函数

 1 //**************************将输入的单词逆序输出*************************//
 2 #include <iostream>
 3 #include<stack>
 4 #include <stdio.h>
 5 #include<stdlib.h>
 6 using namespace std;
 7  
 8 int main(){
 9     string temp;
10     stack<char> s;//
11     int time;
12     cin >> time;
13  
14     for(int i = 0; i < time ; i++){
15  
16         while(cin >> temp ){   //把输入赋值
17             for(int j = 0; j < temp.length(); j++){
18                 s.push(temp[j]);
19             }
20  
21             while(!s.empty()){
22                 cout << s.top() ;
23                 s.pop();
24             }
25             if (getchar() == '\n')    //检测如果是空格,退出循环;
26                 break;
27             cout << " ";
28         }
29         cout << endl;
30     }
31     return 0 ;
32 }

getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,getchar()函数等待输入直到按回车才结束(前提是缓冲区没有数据),回车前的所有输入字符都会逐个显示在屏幕上。但只有第一个字符作为函数的返回值。

举个例子:

 1 #include "stdio.h"
 2 #include "stdlib.h"
 3 int main(void)
 4 {
 5     char c;
 6     while((c=getchar())!='\n')     //每个getchar()依次读入一个字符
 7         printf("%c",c);            //按照原样输出
 8     printf("\n");
 9     system("pause");
10     return 0;
11 }

程序运行时,首先停下来,等你输入一串字符串,输入完毕后,它把你输入的整个字符串都输出来了,咦,你不是说getchar()只返回第一个字符么,这里怎么?

因为我们输入的字符串并不是取了第一个字符就把剩下的字符串丢掉了,它还在我们的内存中,好比,开闸放水,我们把水放到闸里去以后,开一次闸就放掉一点,开一次就放掉一点,直到放光了为止,这里开闸动作就相当于调用一次getchar()。我们输入的字符串也是这么一回事,首先我们输入的字符串是放在内存的缓冲区中的,我们调用一次getchar()就把缓冲区中里出口最近的一个字符输出,也就是最前面的一个字符输出,输出后,就把它释放掉了,但后面还有字符串,所以我们就用循环把最前面的一个字符一个个的在内存中释放掉,直到满足循环条件退出为止。

例子中循环条件里的'\n '实际上就是你输入字符串后的回车符,所以意思就是说,直到遇到回车符才结束循环,而getchar()函数就是等待输入(或缓冲区中的数据)直到按回车才结束,所以实现了整个字符串的输出。当然,我们也可以把循环条件改一下,比如while ((c=getchar())!='a'),什么意思呢,意思就是遇到字符'a'就停止循环,当然意思是如果你输入“12345a213123 ”那么只会输出到a前面的那个字符,结果是12345。

转载于:https://www.cnblogs.com/JeasonIsCoding/p/9848359.html

相关文章:

使用grep过滤make的输出内容

make的输出内容其实分为两种&#xff0c;有些是到标准输出&#xff0c;有些是到标准错误&#xff0c;由于标准输出和标准错误默认都是屏幕&#xff0c;所以平时区分不出来&#xff0c; 实际上一般是error和warning信息到标准错误&#xff0c;其余的到标准输出。 如果要过滤erro…

2021年中国工业互联网安全大赛核能行业赛道writeup之机房密码

附件题&#xff1a;机房密码 题目描述&#xff1a; &#xff08;具体描述忘记了&#xff09; 经过黑客人员的不屑努力&#xff0c;在上位机上发现了登录密码的一半信息&#xff0c;剩下的一半要靠你们继续努力辣&#xff01;&#xff01;&#xff01; ZmxhZyU3Qmgwd19hX0M 附件…

ORB-SLAM2系统的实时点云地图构建

ORB-SLAM2系统的实时点云地图构建这篇博客点云地图构建的流程代码介绍点云地图构建类对象小调整获取关键帧点云地图构建与叠加在地图中设置当前相机位置点云地图到Octomap的转换地图效果结尾这篇博客 &#xff08;PS:修改于2020-9-21&#xff0c;添加了关于System和Tracking类…

使用maven导入jar包

我们都经历过自己写代码时有时就要引用一些第三方的jar包&#xff0c;这个我们都会&#xff0c;但在公司里进行团队开发时&#xff0c;是不允许我们自己导入jar包的&#xff0c;是由项目组长之类的统一导入jar包&#xff0c;我们在这里来了解一下这个过程&#xff1a; a、先创建…

Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...

Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn 发布于&#xff1a;2012-09-15 19:09:28 浏览&#xff1a;164次0Struts2中action接收参数的三种方法及ModelDriven和Preparable接口结合JAVA反射机制的灵活…

关于CSS的长度单位及颜色表示

长度单位 1.q 1/4mm. 2.px 计算机语言中的像素。大多数网页制作常用图片分辨率为72&#xff0c;即每英寸像素为72,1英寸等于2.54cm。那么通过换算可以得出每厘米等于28像素。 3.em 它是描述相对于应用在当前元素的字体尺寸&#xff0c;所以它也是相对长度单位。一班浏览器字体大…

2021年中国工业互联网安全大赛核能行业赛道writeup之鱿鱼游戏

目录 一、尝试 二、Writeup 附加题 鱿鱼游戏&#xff08;来自最近一部很火的韩剧&#xff09; 题目描述&#xff1a; 小王由于操作不规范&#xff0c;误将不明U盘插入到上位机中&#xff0c;导致上位机中的某些关键文件被加密&#xff0c;但攻击者在U盘中还留下了一个可执行…

视觉惯性SLAM: VI ORB-SLAM

视觉惯性SLAM: VI ORB-SLAM这篇博客视觉惯性SLAM预备知识符号说明&#xff1a;相机投影变换矩阵IMU数据更新方程IMU数据的预积分VI ORB-SLAM各环节工作方式InitializationTrackingLocalMappingLoop ClosingFull BAIMU初始化估计bgb_{g}bg​估计尺度sss和重力向量gWg_{W}gW​&am…

AEC、AGC、ANS在视音频会议中的作用?

AGC是自动增益补偿功能&#xff08;Automatic Gain Control&#xff09;&#xff0c;AGC可以自动调麦克风的收音量&#xff0c;使与会者收到一定的音量水平&#xff0c;不会因发言者与麦克风的距离改变时&#xff0c;声音有忽大忽小声的缺点。ANS是背景噪音抑制功能&#xff08…

Java中的拆箱与装箱

我们先来了解一下拆箱与装箱的概念&#xff1a; 装箱&#xff1a;将基本数据类型转换为包装类&#xff1b; 拆箱&#xff1a;将包装类转换为基本数据类型 我们来看两串代码&#xff1a; Integer b1 127;Integer b2 127;System.out.println(b1b2);//trueInteger b3 128;Inte…

WannaCry的UWP版,哈哈哈

转载于:https://www.cnblogs.com/R00R/p/6916731.html

2021年中国工业互联网安全大赛核能行业赛道writeup之数据库登录

附件题&#xff1a;数据库登录&#xff08;一道MISC、流量分析类型题目&#xff09; 题目描述&#xff1a; 具体描述已经忘记o(╯□╰)o 大概意思就是分析附件里的.pcapng包&#xff0c;找到flag。流量涉及到 MySQL 数据库了。 附件下载&#xff1a; https://download.csdn.n…

学生管理系统(用maven来导入jar包)

不废话&#xff0c;直接上 先看一下项目列表&#xff1a; 首先创建一个maven工程&#xff0c;然后导入相应的jar包&#xff0c;请参考&#xff1a;使用maven导入jar包 接着在Source Folder创建具体的项目&#xff1a; Main类&#xff08;客户端&#xff09; package com.z…

视觉惯性SLAM:VINS-Mono

视觉惯性SLAM&#xff1a;VINS-Mono这篇博客一些符号说明IV 测量数据的预处理A.视觉处理前端B.IMU预积分V. 初始化A.Vision-Only SfM in Sliding WindowB.Visual-Inertial AlignmentVI.TIGHTLY COUPLED MONOCULAR VIOA.公式介绍B.IMU误差C.视觉误差D.边缘化E.位姿优化F.以IMU采…

mysql 0x80004005 unable to connect to any of the specified mysql hosts

语言&#xff1a;c# 问题&#xff1a;偶尔会出现连不上mysql 报标题的这个错误。 解决方法&#xff1a;把server localhost 改为 127.0.0.1 或者静态IP &#xff0c;按着改暂时没出现了&#xff0c;继续观望&#xff01; 转载于:https://www.cnblogs.com/wdw31210/p/9857514…

iOS开发-自己定义重用机制给ScrollerView加入子视图

iOS开发-自己定义重用机制给ScrollerView加入子视图 事实上这个问题我非常早就想过&#xff0c;仅仅是没有通过去写程序实现&#xff0c;昨天有人提起&#xff0c;我就巧了一下 不知道大家打印郭tableview&#xff1a;cellforrow中cell初始的次数&#xff0c;也就是重用池中的c…

2021年中国工业互联网安全大赛核能行业赛道writeup之Webshell密码

附件题&#xff1a;Webshell密码 题目描述&#xff1a; 某次攻防演练中&#xff0c;抓到了一个webshell的流量&#xff0c;请分析出密码&#xff0c;flag形式&#xff1a;flag{密码} 附件下载&#xff1a; https://download.csdn.net/download/qpeity/33675356https://downlo…

关于python3与python2同时存在情况下导入pyqt失败解决记录

最近感觉tkinter功能还是比较不适合新手做出高大上的界面&#xff0c;故开始使用pyqt&#xff0c;通过pip安装好了之后&#xff0c;利用qt设计师设计好界面之后&#xff0c;cmd运行之&#xff0c;报错提示没有找到pyqt5模块&#xff0c;IDE运行能正常加载 查找资料后发现&#…

ORBSLAM-Altas:多地图SLAM

ORBSLAM-Atlas&#xff1a;多地图SLAM这篇博客ORBSLAM-Altas这个系统系统方法两类子地图新地图的构建相机位姿的可观测性子地图融合系统线程结尾这篇博客 最近ORB-SLAM3横空出世&#xff0c;马上跑去GitHub膜拜。然后在项目的相关工作中看到了ORB-SLAM3使用了一个多地图方法。这…

Android驱动学习-内部机制_回顾binder框架关键点

内部机制_回顾binder框架关键点server注册服务时, 对每个服务都提供不同的ptr/cookie,在驱动程序里对每个服务都构造一个binder_node, 它也含有ptr/cookie client使用服务前要先getService&#xff1a;会在驱动程序里对该服务构造一个binder_ref, binder_ref含有desc, node成员…

数据库--事务

我们知道数据库中的SQL语句分为DDL(数据定义语言)、DQL(数据查询语言)、DML(数据操纵语言)、DCL(数据控制语言)&#xff0c;详情请看SQL语句 当数据库的表中数据执行完添加、删除、和修改等数据操纵语言&#xff08;DML&#xff09;后&#xff0c;需要执行commit(提交)数据控制…

2021年中国工业互联网安全大赛核能行业赛道writeup之传统流量取证

附件题&#xff1a;传统流量取证 题目描述&#xff1a; 在某次攻防演练中&#xff0c;小王发现流量探针平台突然告警&#xff0c;小王第一时间下载了告警流量包&#xff0c;并进行分析&#xff1a;发现攻击队攻击在攻入内网后&#xff0c;利用了一个内网OA的一个漏洞&#xff…

ORB-SLAM3 论文笔记

ORB-SLAM3 论文笔记这篇博客ORB-SLAM3系统相机模型的抽象(Camera Model)重定位的问题图片矫正的问题视觉惯性SLAM的工作原理相关公式IMU初始化跟踪和建图系统对跟踪丢失的应对多地图的闭环检测和地图融合位置识别视觉地图融合方法视觉惯性地图的融合方法单个地图中的闭环融合结…

为什么需要 外键 呢?

生活现象&#xff1a; 不知你们是否遇到过这样的现象&#xff0c;就是你辛辛苦苦花了几十块钱注册一个会员&#xff0c;结果家里的七大姑&#xff0c;八大姨都要拿去用&#xff0c;而且完全可以用。还有就是一个淘宝账号里却可以添加好多个收获地址(里面包括收货人的姓名&#…

JavaScript闭包函数箭头函数调用与执行

一、标准的闭包函数 //一、标准的闭包函数 function A() {var i0;i;console.log(i : i);return function b() {return function c() {return i}} }var a A(); // 初始化A&#xff0c;执行A内的非function语句 ‘ i0; i‘&#xff0c;输出 I : 1 console.log(a()); // 执行fu…

jlink api sdk c# 离线数获取 标定

jlink 如何 离开 keil、IAR 监控变量呢&#xff1f; 目前 jlink的 api 可以做到&#xff0c;自己可以用C# 做一个 上位机&#xff0c;监控RAM里面的变量。而不用打开keil 调试。还可以 刷写 flash&#xff0c;可以用在产品量产的刷写上。SEGGER 的 jlink sdk并不是免费的&…

2021年中国工业互联网安全大赛核能行业赛道writeup之usb流量分析

目录 一、USB协议 二、键盘流量 三、鼠标流量 四、writeup 附件题&#xff1a;usb流量分析 题目描述&#xff1a; 具体描述忘记了o(╯□╰)o 大概意思是有个U盘插到电脑上&#xff0c;然后经过一些操作导致该电脑重启了。找到这个过程中的flag。 附件下载&#xff1a; 20…

BOS项目 第2天(BaseDao、BaseAction、用户登录、自定义strust登录拦截器)

BOS项目 第2天 今天内容安排&#xff1a; 1、根据提供的pdm文件生成sql 2、持久层和表现层设计---BaseDao、BaseAction 3、实现用户登录功能 4、jQuery EasyUI 消息提示控件 5、jQuery EasyUI menubutton菜单按钮 6、自定义struts2拦截器&#xff0c;实现用户未登录自动跳转到…

服务器 主动 推送 客户端浏览器 消息***

前言 通常情况下&#xff0c;无论是web浏览器还是移动app&#xff0c;我们与服务器之间的交互都是主动的&#xff0c;客户端向服务器端发出请求&#xff0c;然后服务器端返回数据给客户端&#xff0c;客户端浏览器再将信息呈现&#xff0c;客户端与服务端对应的模式是: 客户端请…

数据库表(字段类型、约束、截断表、修改表字段、重命名表)

字段类型&#xff1a; 在这里只列举一些常用的字段类型&#xff1a; 整数类型:int(Integer):普通大小的整数 小数类型&#xff1a; float(m,d)&#xff1a;单精度浮点数&#xff0c;m表示数字长度&#xff0c;d表示小数位数&#xff0c;例如float(5,2)最大值999.99double(m,d…