我正在查看istream
類,我沒有看到一種方法可以完全清除緩衝區並將輸入設置爲爲下一個「乾淨」輸入做好準備。輸入不正確時清理istream
我定義的提取運算我的課,在我的主程序我問用戶的輸入,如:
while (true) {
try {
cout << "Enter input: ";
MyClass c;
cin >> c;
return c;
} catch(const MyException& e) {
cerr << "Error\n";
}
}
如果我進入一個意想不到的不正確的輸入,我被困在一個無限循環。
在我的覆蓋extractin方法中,我控制何時輸入不正確並拋出異常,這一切都可以。我只想也清理istream
對象,以防止無限循環。
我真的不像無限while循環設計,但可能與重置流有關:http://stackoverflow.com/q/257091/1938163 –
http://www.cplusplus.com/reference/ios/ios/clear/ – Veritas