C++从键盘读取一行的方法
从键盘读取一行的方法
cin类中的成员函数getline()和get()--使用数组来处理字符串
cin.getline(数组,要读入的字符数)。getline()将丢弃换行符.这个成员函数通过换行符来确定行尾,但是不保存换行符。相反在存储字符串时使用空字符(\0)来替换换行符。

以下是输出,证明是可以的。但是就是要用到数组,和确定的读取个数。

cin.get(数组,要读人的字符数)。get(数组,要读人的字符数)将丢弃换行符,这个成员函数也是通过换行符来确定行尾,但是换行符还是会保存在输入队列中,可以采取使用cin.get()将换行符过滤掉。

以下是输出

cin.getline()和cin.get()之间的区别,cin.getline()直接读取一行,但是有缺点就是,当读取的字节数满了的时候无法知道,是因为字节数满了而停止的还是读取到了一行到达换行符而导致的停止。而cin.get()就可以通过查看下一个输入字符,如果是换行符证明读取到了一行,否则证明输入流中还有其他数据。
通过cin.getline()和cin.get()会导致的问题:
1.cin.get()读取空行的时候会导致设置失效位。这个意味着接下来的输入将被阻止,可以通过cin.clear()来重新恢复失效位。
2.当输入字符串可能比分配的空间大的时候,cin.getline()和cin.get()会将余下的字符串留在输入队列中,而getline()还会设置失效位,并关闭后面的输入。
3.当混合输入数字和面向行的字符串会导致问题。就是当输入数字之后,再输入字符串,会将输入数字那一次输入的换行符,用在下一行的读入里面,但是此时得到的是换行符,所以会导致后面的输入无法获得。可以通过cin.get()或者是cin.get(ch)来实现读取换行符。
使用字符串进行整行的读入
getline(cin,str),这样就可以进行整行的读入了。

以下是通过读取3行作为例子,注意要在输入数字的时候,进行cin.get()清除换行符。

C++从键盘读取一行的方法的更多相关文章
- 编写javad代码实现使用Scanner从键盘读取一行输入,去掉其中重复字符, 打印出不同的那些字符
package com.loaderman.test; import java.util.HashSet; import java.util.Scanner; public class Test2 { ...
- Java笔记之Scanner先读取一个数字,在读取一行字符串方法分析
问题:大家在学习Java读取数据的时候一般都是使用Scanner方法读取数据,但是其中有一个小问题大家可能不知道, 就是我们在使用scanner的时候如果你先读取一个数字,在读取一行带有空格的字符串, ...
- python中readline判断文件读取结束的方法
注:内容来自网络 本文实例讲述了python中readline判断文件读取结束的方法.分享给大家供大家参考.具体分析如下: 大家知道,python中按行读取文件可以使用readline函数,下面现介绍 ...
- 6-x1 read命令:从键盘读取数据
1.read的用法 read从 STDIN 读取一行数据并将其赋给一个变量,如果没有进行重定向,默认就是从键盘读取用户输入的数据:如果进行了重定向,那么可以从文件中读取数据. read 命令的用法为: ...
- C#读取Excel遇到无法读取的解决方法
C#读取Excel遇到无法读取的解决方法:1.在导入数据连接字符串中,将IMEX=1加入,“Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\ ...
- Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法
前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...
- (转载)ios关闭虚拟键盘的几种方法
在iOS应用开发中,有三类视图对象会打开虚拟键盘,进行输入操作,但如何关闭虚拟键盘,却没有提供自动化的方法.这个需要我们自己去实现.这三类视图对象分别是UITextField,UITextView和U ...
- 分享:Perl打开与读取文件的方法
在Perl中可以用open或者sysopen函数来打开文件进行操作,这两个函数都需要通过一个文件句柄(即文件指针)来对文件进行读写定位等操作. Perl打开与读取文件的方法,供大家学习参考.本文转自: ...
- 关闭ios虚拟键盘的几种方法
在iOS应用开发中,有三类视图对象会打开虚拟键盘,进行输入操作,但如何关闭虚拟键盘,却没有提供自动化的方法.这个需要我们自己去实现.这三类视图对象分别是UITextField,UITextView和U ...
- IOS 点击空白处隐藏键盘的几种方法
IOS 点击空白处隐藏键盘的几种方法 IOS7 点击空白处隐藏键盘的几种方法 IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能 ...
随机推荐
- Nucmer+LINKVIEW实现序列水平的共线性分析
https://www.cnblogs.com/johnsonzzz/p/15151634.html https://github.com/YangJianshun/LINKVIEW 可以绘制两个基因 ...
- 织梦栏目url的seo处理
织梦本身把栏目静态都放在 a 目录下,一些seoer认为栏目放在根目录下 就是所谓的物理路径更短 更有利于优化 ,第一步 在后台系统设置 保存目录位置 改为 / 这个样整个栏目都是存放在根目录下了但 ...
- Android-AccessibilityService
概述 AccessibilityService用于提供辅助功能服务,其在后台运行,并在触发AccessibilityEvents时由系统接收回调.此类事件表示用户界面中的某些状态转换,例如,焦点更改, ...
- Jenkins自动化部署nodejs项目(前端项目)
1.安装nodejs插件 2.Linux系统安装nodejs (1)去nodejs官网下载最新包 https://nodejs.org/dist/latest/ (2)解压安装 tar xvzf no ...
- Docker-Compose实战<上篇>
1 什么是 docker-compose? Compose 是用于定义和运行多容器 Docker 应用程序的工具.通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务.然后,使用 ...
- 物流扫码固定式扫描相机BXT-10M 自动分拣读码器 条码识别扫码器
物流扫码固定式扫描相机BXT-10M 自动分拣读码器 条码识别扫码器 VX : orihard2014 标签: 条码识别扫码器, 自动分拣读码器, 物流扫码固定式扫描相机, 物流扫码相机
- js循环中删除数组中的某个元素
(1)使用js中的splice方法循环删除数组中某个值 eg: var arr=new Array(); arr.push(1); arr.push(2); arr.push(3); arr.push ...
- idea集成maven插件 使用骨架创建maven的java工具 不使用骨架创建maven的java工程
idea集成maven插件 使用骨架创建maven的java工具 new-->FIle-->Model 选择Maven对勾选上要不不能使用骨架 找到这个,选上下一步 Finish即可 ...
- redhat单网卡配置多个IP
单网卡配置多个IP 进入配置网络的文件目录 复制网络配置文件并修改名字 配置网络 网络1 网络2 激活网络设备 重启网络 重启计算机,查看IP地址 (有问题可以提出来)
- express的使用:路由、中间件(二)
13.路由 1.express中的路由指客户端的请求与服务器处理函数间的映射关系 2.express中的路由由请求的类型,请求的URL地址,处理函数组成 3.app.METHOD(PATH,HANDL ...