cin.ignore()详解
cin.sync()的功能是清空缓冲区,而cin.ignore()虽然也是删除缓冲区中数据的作用,但其对缓冲区中的删除数据控制的较精确。
有时候你只想取缓冲区的一部分,而舍弃另一部分,这是就可以使用cin.ignore(),其使用方法是:
cin.ignore(int intExp, char chExp);
其中intExp 是一个整型表达式,也可以是一个整型数值,这个数值表示在一行中忽略的字符的最大数目,比如说intExp=100;还有一个参数chExp,是一个字符表达式。表示如果遇到一个字符值等于chEXP,那么就停止ignore(),如果ignore100个字符之后还没遇到值等于chEXP的字符,那也得停止ignore(),所以100是ignore()所忽略的最大字符数。
下面是几个例子
#include<iostream>
#include<cstdlib>
int main()
{int ival1 = 0, ival2 = 0;std::cin >> ival1;std::cin.ignore(100, '\n');std::cin >> ival2;std::cout << "ival1 = " << ival1 << std::endl;std::cout << "ival2 = " << ival2 << std::endl;system("pause");return 0;
}
①按下Enter后,ival1接收了12,剩余的都被清除掉了,因为Enter就是本身就是空行符,然后输入流会等待第二次输入为ival2赋值。如过没有中间那句std::cin.ignore(100, '\n')
,则不会等待第二次输入,直接输出ival1 = 12 ival2 = 34:
②把std::cin.ignore(100, '\n')
改成std::cin.ignore(2, '\n')
呢,ival1接收了12之后,ignore清除掉两个字符:
为什么ival2是4而不是78呢?
因为我们所用的IO对象cin cout 都是操纵char数据的,不管我们输入的是什么数据,cin cout 都会转成 char来处理,例如我们想要输出的是一个整形变量的值,那么在输出前,cout会将该变量的值转成字符,在进行输出(C++ Primer Plus中有一句话:In essence, the C++insertion operator adjusts its behavior to fit the type of data that follows it.),所以上面ignore清除掉了一个空格和一个字符3,所以缓冲区中剩余4、56、78,所以ival2等于4.
③如果cin.ignore()不给参数,则默认参数为cin.ignore(1,EOF),即把EOF前的1个字符清掉。
原文链接
cin.ignore()详解相关推荐
- C++学习45 流成员函数put输出单个字符 cin输入流详解 get()函数读入一个字符
在程序中一般用cout和插入运算符"<<"实现输出,cout流在内存中有相应的缓冲区.有时用户还有特殊的输出要求,例如只输出一个字符.ostream类除了提供上面介绍过 ...
- C++—— cin输入流详解
标准输入流是从标准输入设备(键盘)流向程序的数据.在头文件iostream.h中定义了cin.cout.cerr.clog 4个流对象,cin是输入流,cout.cerr.clog是输出流. cin是 ...
- mysql ignore详解_MySQL replicate-ignore-db详解
官方的解释是:在主从同步的环境中,replicate-ignore-db用来设置不需要同步的库.解释的太简单了,但是里面还有很多坑呢.生产库上不建议设置过滤规则.如果非要设置,那就用Replicate ...
- C++输入cin应用详解
输入原理: 程序的输入都建有一个缓冲区,即输入缓冲区.一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据.正因为cin函数是直接从缓冲区取数据 ...
- C++中getline()与cin.getline()详解
参考1:https://www.jb51.net/article/180408.htm 参考2:https://www.cnblogs.com/ymd12103410/p/9514896.html
- c语言putchar与getchar,C语言中的getchar和putchar详解
首先给出<The_C_Programming_Language>这本书中的例子: #include int main() { int c; c = getchar(); while (c ...
- 一眼就能看懂的cin.ignore()函数详解
看了很多网上的cin.ignore()函数的解析,发现万片一律,不知道是你抄我的还是我抄你的,还都没有注明转载,而且纯粹是教科书的死搬硬套. 希望我的这篇博客可以帮到大家. 首先,他的函数原型是这样的 ...
- C++ cin 详解之终极无惑
代码编译运行环境:VS2017+Win64+Debug. 文章目录 1.简介 2.常用输入方法 2.1 cin>> 的用法 2.2 cin.get() 的用法 2.2.1 cin.get( ...
- 对于刷oj时因为scanf()出现wa而cin却AC的详解 【scanf() 和 cin 详解】
故事还得从昨天讲起,昨天做了一道题及其的诡异,用cin输入AC了.用scanf()却一直的报错或者陷入了 死循环.这让我很费解,我用了fflush(stdin)来排除,发现没有效果.后来我想起之前写过 ...
最新文章
- 2019前沿信息科技创新论坛成功举办
- comsol线圈不能加电流激励_为什么电压互感器不能短路,电流互感器不得开路?...
- Reference resources
- 多索引表 (5)创建多索引表
- windows下如何查看设备的idVendor(厂商标识)和idProduct(产品标识)?
- python与正则表达式(part4)--正则表达式分组
- c#将list集合转换为datatable的简单办法
- Java IdentityHashMap values()方法与示例
- 66Linux主机名和hosts67网络配置小结
- Movie Thumbnails Maker Mac(MTM)使用指南
- 【java面试题】equals()方法和==的比较区别?
- 关于OptiStruct提问的一些建议
- 如何去掉CAD教育版打印戳记
- Unity:发布WebGL遇到的坑
- 【Python游戏】实现一个恶搞游戏,粉丝大战xxx小游戏(狗头保命) | 附带源码
- 2017美国数学建模ICM D题 优化机场安全的乘客吞吐量检查点(Optimizing the Passenger Throughput at an Airport Security Checkpo)
- python中使用python-dotenv管理环境变量
- Java IDE - Selenium 包下载
- Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn)
- 2023年了,还是没学会内卷....