cin.ignore(a,ch)方法是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。每抛弃一个字符,它都要计数和比较字符:若是计数值达到a或者被抛弃的字符是ch,则c
in.ig
nore()函数执
行
终止;不然,它继续等待。它的一个经常使用功能就是用来清除以回
车结束的输入缓冲区的内
容
,消除上一次输入对下一次输入的影响。好比能够这么用:cin.ignore(10
24,'\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就直接返回 . ios