从键盘读取一行的方法

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. 通过Container制作Image

    1.拉取tomcat镜像 docker pull tomcat docker images 2.根据tomcat镜像创建一个tomcat container docker run -d -it --n ...

  2. 《TensorFlow+Keras自然语言处理实战》图书介绍

    #好书推荐##好书奇遇季#<TensorFlow+Keras自然语言处理实战>.当当京东天猫均有发售. https://item.jd.com/12788707.html 文后有本书配套源 ...

  3. 关于邮箱怎么验证是不是真实的企业邮箱(java汉字和英文呼唤)

    企业邮箱的域名一般都是zhangsan@公司域名,或者zhang_san@公司域名这种形式.这里我只列举zhangsan@公司域名这种形式. 公司要我做一个企业邮箱的模糊匹配和验证,刚接到以为很难.结 ...

  4. homebrew 安装node 切换node版本

    注意:如果之前使用brew install node安装过node,需要先执行brew unlink node来'解绑'node 1.查找可用的node版本 brew search node 2.安装 ...

  5. COM 对象的利用与挖掘4

    作者:Joey@天玄安全实验室 前言 本文在FireEye的研究Hunting COM Objects[1]的基础上,讲述COM对象在IE漏洞.shellcode和Office宏中的利用方式以及如何挖 ...

  6. apk签名之后安装失败

    Android Studio 3.0.1 很奇怪的一个现象,直接run的话可以成功,debug也可以,但是用签名打包之后,却安装失败,原来是打包的时候选错了.原来签名时,Signature Versi ...

  7. mac 查看本机ip

    创建 ip.sh 文件,文件内容为 ifconfig -a | grep -e "inet[^6]" |\ sed -e "s/.*inet[^6][^0-9]*\([0 ...

  8. sm-crypto密码算法库

    一.环境配置 在之前的node.js库配置中,我们已经配置好了node和npm,再次检查配置情况 node -v npm -v npm install --save miniprogram-sm-cr ...

  9. loj6851

    (CF1761D Tester Solution in Chinese) 定义 \(L(v)=\log_2\operatorname{lowbit}(v+1)\):也就是说,\(L(v)\) 是 \( ...

  10. Vuex4.x 简介及state、getters、mutations、actions详解(OptionApi 和 CompositionApi)

    http://t.zoukankan.com/yaopengfei-p-15439203.html 作       者 : Yaopengfei(姚鹏飞) 博客地址 : http://www.cnbl ...