請空緩存

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,表明輸入流已恢復正常

}

發佈了18 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章