fflush(stdin);// 清空指定文件流緩衝區
cin.ingore(streamsize_n=1,int_type_delim=traits_type::eof());
cin.clear(); cin.sync();
cin.ignore(), cin.clear() -> C++
cin.ignore() 是從當前位置忽略若干字符.
cin.clear() 是清除當前緩衝區.
flushall(), fflush() -> C
flushall() 清除所有緩衝區.
fflush() 清除指定的文件流緩衝區.
下面示例程序摘自網絡:http://bbs.bc-cn.net/dispbbs.asp?boardID=56&ID=138241
#include <iostream>
using namespace std;
void main()
{
int a;
cout<<"輸入一個字母:"<<endl;
cin>>a; //int型變量中放了char型數據,failbit置1
cout<<"cin.fail()="<<cin.fail()<<endl; //輸出1
cout<<"輸入一個數字:"<<endl; //由於failbit值爲1,輸入流不能正常工作
cin>>a; //故此處的輸入無效
cout<<a<<endl; //輸出不確定值
cin.clear(); //此處用cin.clear()流標誌復位
cout<<"cin.fail()="<<cin.fail()<<endl; //此處failbit已爲0
cout<<"輸入一個數字:"<<endl;
//但剛纔輸入的字符並沒有從流中清除,所以cin>>a又把那個字符放入a中,流輸入流又不能正常工作
cin>>a;
cout<<a<<endl; //輸出不確定值
cout<<"cin.fail()="<<cin.fail()<<endl; //在此處failbit又爲1
cin.clear(); //再次修復輸入流
cin.ignore(); //取走剛纔流中的字符
cout<<"輸入一個數字:"<<endl; //再次接收用記輸入,這次輸入數字,正常輸出了
cin>>a;
cout<<"a="<<a<<endl;
//現在再看一下輸入流的failbit
cout<<"cin.fail()="<<cin.fail()<<endl;//輸出0,表明輸入流已恢復正常
}