文档章节

cin.ignore()函数的用法

r
 ranjiewen
发布于 2016/11/03 23:52
字数 627
阅读 20
收藏 0
     

      功能:函数用于输入流。它读入 字符,直到已经读了num 个字符(默认为1)或是直到字符delim 被读入(默认为EOF).其调用形式为cin.ignore(n,终止字符)
      原型:istream &ignore( streamsize num=1, int delim=EOF );
      函数作用是跳过输入流中n个 字符,或在遇到指定的终止字符时提前结束(此时跳过包括终止字符在内的若干字符)。
程序举例:
#include <iostream>
using namespace std;
int main()
{
char array[8];
cin.ignore(6,'a');
cin.getline(array, 8);
cout << array << endl;
return 0;
}

输入:bcdefgk 输出:k

输入:bcagkld 输出:gkld

它还可以这样用:cin.ignore();即不带参数;此时 默认参数为1.

     cin.ignore(a,ch)方法是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到a或者被抛弃的字符是ch,则cin.ignore()函数执行终止;否则,它继续等待。它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。比如可以这么用:cin.ignore(1024,'\n'),通常把第一个参数设置得足够大,这样实际上总是只有第二个参数'\n'起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。


eg.

#include <iostream>
using namespace std;
void main()
{
    int a, b, c;
    cout << "input a:";
    cin >> a;
    cin.ignore(1024, '\n');
    cout << "input b:";
    cin >> b;
    cin.ignore(1024, '\n');
    cout << "input c:";
    cin >> c;
    cout << a << "\t" << b << "\t" << c << endl;
}

 

      如果没有cin.ignore(),可以一次输入3个数,用空格隔开就好了。。可是非常不美观。。这样才是我们想要的。

      如果cin.ignore()不给参数,则默认参数为cin.ignore(1,EOF),即把EOF前的1个字符清掉,没有遇到EOF就清掉一个字符然后结束,会导致不正确的结果,因为EOF是文件结束标识呵。

#include<iostream>  
using   namespace   std;

void main()
{
    char   str1[30], str2[30], str3[30];
    cout << "请输入你的姓名:";
    cin >> str1;
    cout << "请输入你的住址:";
    cin.ignore();
    cin.getline(str2, 30, 'a');
    cout << "请输入你的籍贯:";
    cin.ignore();
    cin.getline(str3, 30);
    cout << str3;
}

     如果在地址那里输入bcdabcd那么此时流里面剩的是bcd\n,此时cin.ignore();吃掉的就是b了,这是流里还剩下cd\n直接交给cin.getline(str3,30);应为有个\n所以这里getline就直接返回 .

本文转载自:http://www.cnblogs.com/ranjiewen/p/5901198.html

r
粉丝 1
博文 203
码字总数 28
作品 0
武汉
程序员
私信 提问
cin.ignore()的用法

cin.ignore(a,ch)方法是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到a或者被抛弃的字符是ch,则cin.ignore()函...

izmm
2013/08/23
98
0
C++ 控制台无法输入字符串

今天抱着试试的心态参加学校“ACM”预先赛,想着要用前几天刚学的C++试试,没想到却让一个小问题把我给卡住了,三道题只做出了一道,其它两道不是算法不知道,而是编程语言不熟悉导致的,觉得...

曾赛
2009/05/27
740
0
C++—— 恢复状态标志和清理缓存(以标准库输入流std::cin输入整数时死循环为例)

C++—— 恢复状态标志和清理缓存(以标准库输入流std::cin输入整数时死循环为例) 标准库输入流std::cin输入整数时死循环 本文,主要解决用标准库输入流std::cin输入整数的时候,如果误输入了...

kingscoming
2017/12/19
0
0
C++中cin、cin.get()、cin.getline()、getline()、gets()等

学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1、cin 2、cin.get...

Famp
2014/08/15
14.3K
2
让Dev-C++运行C++程序的控制台窗口等待查看运行结果

在使用Dev-C++运行C++程序时,控制台窗口总是一晃而过,无法看到输出结果,着实让人苦恼,解决这个问题 可以用以下方法:      1、在编程结束时加一句:system("pause");      2、如...

找一片天空散步
2012/11/30
3.8K
5

没有更多内容

加载失败,请刷新页面

加载更多

DevOps是如何实现效率的提升?

随着企业业务对软件系统日益依赖,IT管理与研发模式也随之对“敏态”模式产生了需求,也就是今天时常提起的DevOps。提升效率,是DevOps实践的核心内容之一。就让我们来一起从软件生命周期的业...

嘉为科技
7分钟前
2
0
总结:linux目录之proc

我们系统大部分的基础数据采集,其实就是读取proc目录下的文件,并解析获取数据的过程。 1、如cpu利用率:直接cat /proc/cpuinfo命令,然后获取输出内容,并解析里面的数据,如cpu核数等; ...

浮躁的码农
9分钟前
2
0
比原Bapp红包应用

喜迎国庆期间,比原链在自己的移动端钱包Bycoin(下载地址)和google插件钱byone中推出了红包应用,在国庆期间深受大家好评。 那我们今天就来大概介绍一下比原红包,以及基于比原链开发dapp应用...

比原链Bytom
10分钟前
2
0
Linux中没有rc.local文件的解决方法

Linux中没有rc.local文件的解决方法是什么呢?这应该是很多工程师比较头疼的问题,下面就给大家例举几个解决办法。 比较新的Linux发行版已经没有rc.local文件了。因为已经将其服务化了。 解决...

xiangyunyan
10分钟前
2
0
数据中台在阿里巴巴集团内部的实践情况

作者:品鉴 数据中台门在阿里巴巴集团干什么的,由哪个部门掌管?数据中台在阿里巴巴的主要作用是什么呢?外面吹嘘这么神秘的数据中台在阿里实践的如何呢?今天小编正好要采访数据技术及产品...

阿里云官方博客
10分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部