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