从键盘读取一行的方法

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++从键盘读取一行的方法的更多相关文章

  1. 编写javad代码实现使用Scanner从键盘读取一行输入,去掉其中重复字符, 打印出不同的那些字符

    package com.loaderman.test; import java.util.HashSet; import java.util.Scanner; public class Test2 { ...

  2. Java笔记之Scanner先读取一个数字,在读取一行字符串方法分析

    问题:大家在学习Java读取数据的时候一般都是使用Scanner方法读取数据,但是其中有一个小问题大家可能不知道, 就是我们在使用scanner的时候如果你先读取一个数字,在读取一行带有空格的字符串, ...

  3. python中readline判断文件读取结束的方法

    注:内容来自网络 本文实例讲述了python中readline判断文件读取结束的方法.分享给大家供大家参考.具体分析如下: 大家知道,python中按行读取文件可以使用readline函数,下面现介绍 ...

  4. 6-x1 read命令:从键盘读取数据

    1.read的用法 read从 STDIN 读取一行数据并将其赋给一个变量,如果没有进行重定向,默认就是从键盘读取用户输入的数据:如果进行了重定向,那么可以从文件中读取数据. read 命令的用法为: ...

  5. C#读取Excel遇到无法读取的解决方法

    C#读取Excel遇到无法读取的解决方法:1.在导入数据连接字符串中,将IMEX=1加入,“Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\ ...

  6. Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法

    前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...

  7. (转载)ios关闭虚拟键盘的几种方法

    在iOS应用开发中,有三类视图对象会打开虚拟键盘,进行输入操作,但如何关闭虚拟键盘,却没有提供自动化的方法.这个需要我们自己去实现.这三类视图对象分别是UITextField,UITextView和U ...

  8. 分享:Perl打开与读取文件的方法

    在Perl中可以用open或者sysopen函数来打开文件进行操作,这两个函数都需要通过一个文件句柄(即文件指针)来对文件进行读写定位等操作. Perl打开与读取文件的方法,供大家学习参考.本文转自: ...

  9. 关闭ios虚拟键盘的几种方法

    在iOS应用开发中,有三类视图对象会打开虚拟键盘,进行输入操作,但如何关闭虚拟键盘,却没有提供自动化的方法.这个需要我们自己去实现.这三类视图对象分别是UITextField,UITextView和U ...

  10. IOS 点击空白处隐藏键盘的几种方法

    IOS 点击空白处隐藏键盘的几种方法     IOS7 点击空白处隐藏键盘的几种方法   IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能 ...

随机推荐

  1. 日志 LOG / Debug

    有很多时候我们想要查看日志文件,发现服务器已经被重启了,然后原来的日志就被打包存起来了,这个时候生成的gz日志文件我们就没有办法直接去查看了. 所以这个时候我们就需要zcat+日志名.gz来查看,还可 ...

  2. composer disgnoize public key fail

    https://composer.github.io/pubkeys.html 还有这事, 太不可思议了哦.--怎么进去的, 真的不知道哦.

  3. Windows支持多个远程连接

    1.点击 开始-->运行-->输入"gpedit.msc",进入本地组策略编辑器 2.点击 计算机配置-->管理模板-->Windows组件-->远程 ...

  4. 查询最上活动的activity

    adb shell dumpsys window windows | grep mCurrent

  5. vue中v-if控制的可编辑div(contenteditable='true')无法绑定@input事件

    <div class="content-container" ref="contentContainer"> <div v-if=" ...

  6. Dynamics 365 incident原生实体特点

    有以下特点: customerid字段必填,而且该字段类型是"客户".可以关联多种数据类型. 更新服务用户的姓名,会更新所有关联SR的customeridName. 关闭SR会产生 ...

  7. android 获取手机的唯一id,获取当前时间,获取两位随机数

    //获取机器的唯一id public static String getDeviceID() { String deviceID= ""; try{ //一共13位 如果位数不够可 ...

  8. Centos 7.5 MySql的安装和配置

    一.安装 三个步骤: wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmyum -y ins ...

  9. 统计学习导论之R语言应用(三):线性回归R语言代码实战

    统计学习导论(ISLR) 参考资料 The Elements of Statistical Learning An Introduction to Statistical Learning 统计学习导 ...

  10. FIFO 串口接收处理机制

    与安富莱电子的串口处理机制做对比交互 参考链接: https://www.eet-china.com/mp/a161019.html