午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

清空緩沖區(qū)

 sun317 2012-11-20
清空輸入緩沖區(qū):
fflush(stdin);
std::cin.clear(); //清除錯(cuò)誤標(biāo)記
std::cin.sync(); //清空緩沖區(qū)

cin.clear() 只是更改cin的狀態(tài)標(biāo)示符,并沒有清除緩沖區(qū),而一般輸入是以回車為結(jié)束(轉(zhuǎn)化為換行符'\n'),所以cin.clear()并沒有起作用。應(yīng)該加上在cin.sync(); 或 fflush(stdin); 與cin.clear() 一起使用。
如果只調(diào)用cin.clear(),錯(cuò)誤標(biāo)記是被刪除了,可以繼續(xù)標(biāo)準(zhǔn)輸入了。但是別忘了,上次輸入的非數(shù)字字符(就是這個(gè)字符標(biāo)記了end-of-stream)還在緩沖區(qū)里呆著呢,繼續(xù)cin的話,會(huì)立即得到這個(gè)非數(shù)字字符,導(dǎo)致又一個(gè)end-of-stream,于是copy立即返回,結(jié)果什么也沒得到。
如果只調(diào)用cin.sync(),緩沖區(qū)是被清空了,但是錯(cuò)誤標(biāo)記還在,依然沒法繼續(xù)輸入。
所以cin.clear()和cin.sync()一個(gè)都不能少,但是順序可以顛倒。

清空輸出緩沖區(qū):
fflush(stdout);
std::cout.clear();
std::cout.flush();
endl也有清空輸出緩沖區(qū)的功能.

int main()
{
 int a;
 vector<int> ivec;
 
 while (cin>>a)
 {
        ivec.push_back(a);
 }
if (ivec.size()%2!=0)
 {
          //fflush(stdin);//用這個(gè)可以全部清空
          cin.clear();
          cin.sync();
          cout<<"please input the last number:";
          cin>>a;
           ivec.push_back(a);
 }
 
 for (vector<int>::size_type i =0; i!=ivec.size(); i+=2)
 {
          cout<<ivec[i] + ivec[ivec.size()-i-1]<<" ";
 }
 cout<<endl;
 
return 0;
}

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多