cin.ignore()函数是C++标准输入流(cin)中的一个方法。cin.ignore()函数中有两个参数,分别为数值型的a 和 字符型的 ch ,即cin.ignore( a, ch )。它表示从输入流 cin 中提取字符,提取的字符被忽略,不被使用。而每抛弃一个字符,它都要进行计数和比较字符:如果计数值达到 a 或者被抛弃的字符是 ch ,则cin.ignore() 函数执行终止;否则,它继续等待。

它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。例如可以这么用,cin.ignore(1024, ‘\n’),通常把第一个参数设置得足够大,这样实际上是为了只有第二个参数 ‘\n’ 起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲流中清除出去。

如果默认不给参数的话,默认参数为cin.ignore(1, EOF),即把EOF前的1个字符清掉,没有遇到EOF就清掉一个字符然后结束。

下面用一个例子简单说明cin.ignore()函数的用法:

比如我们要求接受输入一个字符串(没有空格),然后输出该字符串。C++代码如下:

复制代码

1 #include <iostream>  2 using namespace std;  3   4 int main()  5 {  6     char str[30];  7     cout << "请输入一个字符串:";  8     cin >> str;  9     cout << str << endl;
10
11     return 0;
12 }

复制代码
运行如下图:

当按下任意键时,运行程序会立即退出。如果想让程序停留一下,不要立即退出。我们很容易想到让程序末尾再接受一个输入,输入任意一个字符后程序退出。因此,我们在原先代码加上一个输入即cin.get(),代码如下:

复制代码

1 #include <iostream>  2 using namespace std;  3   4 int main()  5 {  6     char str[30];  7     cout << "请输入一个字符串:";  8     cin >> str;  9     cout << str << endl;
10
11     cout << "请输入任意字符结束程序!\n";
12     cin.get();
13
14     return 0;
15 }

复制代码
此时运行如下图:

按下任意键程序仍然会立即退出而不停留,这与我们想要的结果不一致。这是为什么呢?

如果在程序末尾再多接受一个输入,即在代码上再加一个cin.get(),再次运行如下图:

此时输入字符 a 时,程序没有立即退出,达到了我们预计的要求。

回过头来想,为什么加入第一个cin.get()不行呢?那肯定是因为第一个cin.get()获取了某个字符,仔细考虑一下,不难想到当输入"hello"过后按下了回车键,因而第一个cin.get()获取到的就是 ‘\n’ 。在不加入第二个cin.get()情况下,我们可以想到用cin.ignore()函数,将cin中提取的 ‘\n’ 忽略掉。具体代码如下:

复制代码

 1 #include <iostream>  2 using namespace std;  3   4 int main()  5 {  6     char str[30];  7     cout << "请输入一个字符串:";  8     cin >> str;  9     cout << str << endl;
10
11     cin.ignore(100, '\n');
12     cout << "请输入任意字符结束程序!\n";
13     cin.get();
14
15     return 0;
16 }

复制代码

运行如下:

此时,和加入两个cin.get()一样得到相同的结果,加入cin.ignore(100, ‘\n’);这行代码的作用就是将输入"hello"过后按下的回车给忽略掉。

c++——ignore()函数相关推荐

  1. QEvent的accept()和ignore()函数功能

    QEvent的accept()和ignore()一般不会用到,因为不如直接调用QWidget类的事件处理函数直接,而且作用是一样的,见下面的例子. 推荐直接调用QWidget的事件处理函数.而不是调用 ...

  2. qt中 accept()和ignore()函数

    首先来看一段代码: //!!! Qt5 // ---------- custombutton.h ---------- // class CustomButton : public QPushButt ...

  3. cin.ignore()函数的使用

    ignore函数 功能:函数用于输入流.它读入字符,直到已经读了num 个字符(默认为1)或是直到字符delim 被读入(默认为EOF).   其调用形式为cin.ignore(n,终止字符) 原型: ...

  4. 一眼就能看懂的cin.ignore()函数详解

    看了很多网上的cin.ignore()函数的解析,发现万片一律,不知道是你抄我的还是我抄你的,还都没有注明转载,而且纯粹是教科书的死搬硬套. 希望我的这篇博客可以帮到大家. 首先,他的函数原型是这样的 ...

  5. c++ 中的 cin.get()函数

    cin.get作用:从标准输入吸收任何字符(包括回车和空格),优先吸收cin缓存(之前cin的残留内容). #include <iostream> #include <sstream ...

  6. c++ 标准库中 cin.ignore()

    cin.ignore()函数是C++标准输入流(cin)中的一个方法.cin.ignore()函数中有两个参数,分别为数值型的a 和 字符型的 ch ,即cin.ignore( a, ch ).它表示 ...

  7. QT-qevent 事件的accept()和ignore()

    QEvent的accept()和ignore()一般不会用到,因为不如直接调用QWidget类的事件处理函数直接,而且作用是一样的,见下面的例子. 推荐直接调用QWidget的事件处理函数.而不是调用 ...

  8. C/C++——一些与输入有关的istream类成员函数

    eof 函数 eof是end of file的缩写,表示"文件结束".从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值(真),否则为0(假). #inclu ...

  9. qevent 事件的accept()和ignore()

    QEvent的accept()和ignore()一般不会用到,因为不如直接调用QWidget类的事件处理函数直接,而且作用是一样的,见下面的例子. 推荐直接调用QWidget的事件处理函数.而不是调用 ...

最新文章

  1. 慈溪计算机编程培训,慈溪Python编程培训
  2. [NET] 如何从 Winform 移植到 Webform [自己搞定HTTP协议]
  3. 用户对OA实施的一些认识误区
  4. [仙吕·一半儿] 题画《翠林和鸣》
  5. UVA - 10168 Summation of Four Primes(哥德巴赫猜想)
  6. 2015北京网络赛 G题 Boxes bfs
  7. mysql数据库ACID实现原理
  8. Linux谁访问这个内存,Linux中的直接内存访问
  9. (49)Xilinx Subtracter IP核配置(十)(第10天)
  10. React 组件开发 传参(详解)。
  11. 四足机器人动力学建模(一)
  12. 链表排序python
  13. css找某个元素的下个子元素,使用CSS获取特定位置的子元素
  14. Yandex-好用的以图搜图网站
  15. 计算机表格复制粘贴,Excel复制表格保留原格式不会操作?超全技巧教给你!
  16. 为什么入侵地球的总是火星人,是别的星球不够努力吗?
  17. 群晖docker实现IPV6访问
  18. imx7d 通过imx7d-sdb.dts 添加 spi设备
  19. ONE~~~~~~~~~
  20. 公司内网成功实现WSUS在不连外网的条件下更新补丁包!

热门文章

  1. 计算机考证可直接考二级吗
  2. 【超融合】818超融合发展经历了哪几个阶段!
  3. 渐变的用法及案例实现
  4. golang 解析UTF8编码形式的字符串
  5. android 应用程序内存上限,Android APP的最大可用内存
  6. 使用命令行将文件上传到阿里云OSS
  7. 2019spring exam 7-5 校庆
  8. 赶吃花的牛 USACO
  9. 计算机主机发出滴滴声音怎么办,电脑主机有滴滴声音是怎么回事?
  10. BP算法双向传,链式求导最缠绵(深度学习入门系列之八)