码迷,mamicode.com
首页 > 其他好文 > 详细

cin.ignore()函数的用法

时间:2016-06-14 06:19:44      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

      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就直接返回 .

cin.ignore()函数的用法

标签:

原文地址:http://www.cnblogs.com/ranjiewen/p/5582601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!