cin.ignore()的用法

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

相关文章
相关标签/搜索