zoukankan      html  css  js  c++  java
  • cin.ignore()函数的用法

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

    eg.

    #include <iostream>
    using namespace std;
    void main()
    {
        int a,b,c;
        cout<<"input a:";
        cin>>a;
        cin.ignore(1024, '
    ');
        cout<<"input b:";
        cin>>b;
        cin.ignore(1024, '
    ');
        cout<<"input c:";
        cin>>c;
        cout<<a<<"	"<<b<<"	"<<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 ,此时cin.ignore();吃掉的就是b了,这是流里还剩下cd 直接交给cin.getline(str3,30);应为有个 所以这里getline就直接返回 .
    转处:http://blog.sina.com.cn/s/blog_868a5fbd0100vz9l.html

  • 相关阅读:
    1006: [HNOI2008]神奇的国度
    1003: [ZJOI2006]物流运输trans
    Task 6.2冲刺会议六 /2015-5-19
    Task 6.2冲刺会议五 /2015-5-18
    Task 6.2冲刺会议四 /2015-5-17
    Task 6.3 场景调研
    Task 8 找水王
    Task 6.2站立会议三
    Task 6.2站立会议二
    Task 6.2站立会议一
  • 原文地址:https://www.cnblogs.com/laohaozi/p/12538216.html
Copyright © 2011-2022 走看看