cin.ignore()用法

2024-01-08 15:08
文章标签 用法 cin ignore

本文主要是介绍cin.ignore()用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以前刷一道算法题用getline()函数的时候用了cin.ignore()就可以通过,没用这个函数就不能通过,最近也是又一次用到getline()想起了这个函数就测试了一下,同时也很好奇它的用法到底是怎么样的,上网去看了一下别人的博客,感觉不那么好懂,不过依样画葫芦我自己拿了一些数据来测试,基本上算是明白了,下面就解释一下这个函数:
cin.ignore()函数中有两个参数,即原型是cin.ignore(a,b),a是一个数值,b是一个字符,例如说cin.ignore(7,’a’)。就拿这个例子来说,它表示从输入流cin中提取字符,提取的字符抛弃,每抛弃一个字符,计数加1同时比较字符:如果计数值达到7或者被抛弃的字符是a,则cin.ignore()函数执行终止,那么下面用一个实际例子来解释:
代码如下:

#include<iostream>
#include<string>
using namespace std;
int main()
{string line;cin.ignore(7,'a');cin>>line;cout<<line<<endl;return 0;
}

第一组测试数据:

dsfdagfdgcd

a是该字符串的第5个字符,5<7,那么在读到a这个字符的时候这个函数终止,输出后面的所有字符,即输出为:

gfdgcd

第二组测试数据:

dhfdgfghsadfgdfgcd

此时a是该字符串的第10个字符,10>7,那么在读完7个字符之后这7个字符都没有一个是a,函数终止,从第8个字符开始输出后面所有字符,即输出为:

hsadfgdfgcd

如果不给这个函数给定参数,它的默认参数为cin.ignore(1, EOF),那么相信看过上面的内容是知道这个参数是什么意思的,其就是表示:要么读完一个字符或者读到换行符结束。
上面的内容看完肯定是明白了不少的,那么我遇到的一个问题也放在下面解释一下,应该是很好理解了,代码如下:

#include<iostream>
#include<string>
using namespace std;
int main()
{string line;cin.ignore();while(getline(cin,line))cout<<line<<endl;return 0;
}

输入如下:

I love everybody
Iloveeverybody
I love everybody

输出如下:

 love everybody
Iloveeverybody
I love everybody

第一行的第一个字符就被抛弃了,从空格开始其他都没有发生变化。那么我们将cin.ignore()函数放到循环中看一下会出现什么情况,代码如下:

#include<iostream>
#include<string>
using namespace std;
int main()
{string line;for(int i=3;i>0;i--){cin.ignore();getline(cin,line);cout<<line<<endl;}return 0;
}

输入还是一样,输出如下:

 love everybody
loveeverybodylove everybody

那么接下来这个代码可以自己拿去试一下,然后自己分析一下,当然前面讲的个人感觉这个函数还是讲清楚了,要是下面这个代码能看懂输出为什么是这样,应该是理解得很明白了,代码如下:

#include<iostream>
#include<string>
using namespace std;
int main()
{string line;while(getline(cin,line)){cin.ignore();cout<<line<<endl;}return 0;
}

两个代码一起看看应该就没什么大问题了:

#include<iostream>
#include<string>
using namespace std;
int main()
{string line;cin.ignore();while(getline(cin,line)){cin.ignore();cout<<line<<endl;}return 0;
}

输入和上个代码一样,用自己的编译器测试一下你就会明白很多,这里我要是把运行结果拿上来看是很麻烦的,但是自己测试一下就明白了,切记:一行一行的输入,不要直接复制粘贴三行输入,否则你反而有可能搞晕。

这篇关于cin.ignore()用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/583863

相关文章

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

Mysql中isnull,ifnull,nullif的用法及语义详解

《Mysql中isnull,ifnull,nullif的用法及语义详解》MySQL中ISNULL判断表达式是否为NULL,IFNULL替换NULL值为指定值,NULLIF在表达式相等时返回NULL,用... 目录mysql中isnull,ifnull,nullif的用法1. ISNULL(expr) → 判

Java中的for循环高级用法

《Java中的for循环高级用法》本文系统解析Java中传统、增强型for循环、StreamAPI及并行流的实现原理与性能差异,并通过大量代码示例展示实际开发中的最佳实践,感兴趣的朋友一起看看吧... 目录前言一、基础篇:传统for循环1.1 标准语法结构1.2 典型应用场景二、进阶篇:增强型for循环2.

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

MySQL主从复制与读写分离的用法解读

《MySQL主从复制与读写分离的用法解读》:本文主要介绍MySQL主从复制与读写分离的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、主从复制mysql主从复制原理实验案例二、读写分离实验案例安装并配置mycat 软件设置mycat读写分离验证mycat读

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled