#include<iostream>
#include<vector>
#include<stdexcept>
#include<stdio.h>
using namespace std;
void keep_window_open()
{
cin.clear(); //clear badbit flag
cin.sync(); //clear stdin stream
cout << "Please enter a character to exit\n";
char ch;
cin >> ch;
cout <<ch <<endl;
return;
}
int main()
try{
vector<int> v;
int x;
while(cin>>x)
{
v.push_back(x);
}
for(int i=0;i<=v.size();i++)
cout<<"v["<<i<<"]=="<<v.at(i)<<endl; //out of range
}catch (exception& oor) {
cerr << "Out of Range error: " << oor.what() << endl;
keep_window_open();
return 1;
}catch(...){
cerr<<"exception :something went wrong\n";
return 2;
}
上面的代碼是爲了練習C++異常處理函數。如何清除標準輸入流
但是,在清除Ubuntu 11.04下的標準輸入流點時,程序無法正常運行,但在代碼塊中的Windows下運行良好。怎麼了?
此外,爲什麼「fflush(stdin);」不能取代「cin.clear(); cin.sync();」?如果有其他方法來清除流?
感謝您的幫助!
爲什麼你想這樣做? – 2012-03-19 01:24:38
你爲什麼想這樣做?我不認爲存在一個好的,更不用說便攜式方法來「清除」STDIN,除了讀取所有數據。 – 2012-03-19 01:25:08