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

相關文章
相關標籤/搜索