关于C++中cin.ignore()的问题
实际上你在每次输入数据的时候会输入一个回车 ‘\n' cin在读入整数时候会忽略空白碰到非数字('\n')时停止 cin在getline时会把'\n'及之前的内容读回来,哪怕是空行也会读入 cin在读入字符时会把缓冲区内当前字符读入(不会忽略空白) cin.ignore(1000, '\n')的含义是把缓冲区内从当前字符开始知道'\n'之前字符(如果有1000个的话)忽略掉,实际上你这里假设一行不会超过1000个字符,所以含义是忽略一行如果你想输入a=1,b=2 name="xxxx", c='y' 所以你的输入是 1回车2回车xxxx回车y回车 cin读入a=1 碰到回车停止 此时1后面的回车还在缓冲区里 cin读b=2时忽略2前面的回车但是停止在2后面的回车 此时你如果掉getline 就会读入一个2后面回车前面的也就是空行 因此此时应当调用一个cin.ignore(1000,'\n')把这个\n忽略掉
- 追问
-
我大概懂点了,但是我还是不明白为什么放在getline后面它就会让我输name了,按道理应该不也是直接跳过吗?
- 回答
-
读入b变量的后边必须加一个cin.ignore(1000,'\n') 用来去掉那一行的'\n' 不然b后的getline就不用输入就读到一个空行 这个时候输出就变成了 name:c:了
- 追问
-
不是。。我的意思是 【我试过了如果没有cin.ignore(1000, '\n'),或者把它放在 cin a/cin c后,那么它就不会让我输入name直接让我输入c。 如果放在cin b后,就没问题。 如果放在getline cin name后,它虽然会让我输入name,但是后来的输出表明name值为空。】 这里的第三点,我不明白
- 回答
-
如果放在getline cin name后,它虽然会让我输入name,但是后来的输出表明name值为空。 这是你理解错了放在getline cin name后 实际不是让你输入name 此时name已经被读入是b后那个换行符 cin.ignore(1000, '\n')让你的界面停住了 你输入任何数据正好被cin.ignore(1000, '\n')说忽略
关于C++中cin.ignore()的问题相关推荐
- c++ 标准库中 cin.ignore()
cin.ignore()函数是C++标准输入流(cin)中的一个方法.cin.ignore()函数中有两个参数,分别为数值型的a 和 字符型的 ch ,即cin.ignore( a, ch ).它表示 ...
- 一文读懂C++中的cin.ignore()
cin.ignore(int intExp, char chExp); 1.作用: 从缓冲区舍弃前intExp个字符(char):如果在舍弃的过程中遇到了chExp,就舍弃掉chExp,然后退出. 也 ...
- cin输入问题的处理:cin.clear() 、cin.sync() 、cin.ignore()
1.cin.clear():清除cin流的错误状态,将错误标识改为默认0 2.cin.sync():清除缓冲区的数据 3.cin.ignore(): 其原型为: istream & ignor ...
- C++ cin.ignore()用法
cin.ignore(int a,char b); a为一行中最大读取字符长度,b为某一个字符.在缓冲区中寻找b,找到后忽略b以前的所有字符(包括b).如果在a的范围内还没有找到b,则忽略b以前的所有 ...
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1.cin 2.cin.ge ...
- C++中cin、cin.get()、cin.getline()、getline()等函数的用法
转载:http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html c++输入流函数主要以下几个: 1.cin 2.cin.get ...
- C++ cin.sync()和cin.ignore()
cin.sync()的功能是清空缓冲区,而cin.ignore()虽然也是删除缓冲区中数据的作用,但其对缓冲区中的删除数据控制的较精确. 有时候你只想取缓冲区的一部分,而舍弃另一部分,这是就可以使用c ...
- 【转载】C++中cin、cin.get()、cin.getline()、getline()、gets()函数详解
学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结: 1.cin 2.cin.get() 3.cin.getline() 4.getline() 5.gets() 6.getchar() 附:c ...
- 02头文件的冲突导致,清除缓冲区失败之cin.ignore() 问题
输入任意多个整数, 把这些数据保存到文件data.txt中. 如果在输入的过程中, 输入错误, 则提示用户重新输入. 指导用户输入结束(按ctrl + z) [每行最多保存4个整数] 可能遇到的 ci ...
最新文章
- android 增加一条广播,Android中BroadcastReceiver广播使用及注意点
- Oracle 高性能SQL引擎剖析----执行计划
- c++学习笔记之基础---类内声明函数后在类外定义的一种方法
- Linux内核移植之二:Kconfig分析
- guava中的Splitter
- 转:pytorch版的bilstm+crf实现sequence label
- Nginx/Apache发大招
- 基于Redis、Storm的实时数据查询实践
- 唯一《可解释机器学习》中文书来了:复旦研究生翻译,原作者转发点赞
- java 获取本机的ip和mac_java获取本机ip和mac地址
- 优麒麟(Ubuntu Kylin)安装日志
- 腾讯云推出首款自研服务器星星海;苹果新款Mac Pro整套配齐超30万;Fedora 31稳定版发布|极客头条...
- 原创:CSS3技术-雪碧图自适应缩放与精灵动画方案
- buf.readInt8函数详解
- vs怎么换背景颜色?
- vue中headers是什么_vue在响应头response中获取自定义headers操作
- 时域分析——有量纲特征值含义一网打尽
- 5位数的数字黑洞是多少_数字黑洞求解问题
- 电脑卡住点什么都没反应怎么解决
- 2012年华为杯校园编程大赛决赛 类别:软件C/C++语言