這主要是Streams狀態(tài)的問題。Streams定義了一些型別為iostate的常數(shù),用以反映stream的狀態(tài):
??? goodbit :一切都好;沒有其他任何狀態(tài)為被設立;
??? eofbit? :遇到end-of-file;
??? failbit :錯誤;某個I/O操作未成功(通常是由于讀入格式錯誤,例如程序想讀入一個整數(shù),卻遇到一個字符);
??? badbit? :毀滅性錯誤;
?
C語言可以在“格式錯誤”發(fā)生之后仍然讀入字符。但C++不同:如果設置了failbit,除非顯示予以清除,否則無法進行下一個操作。
?
具體請參考《C++標準程序庫》p597, Streams的狀態(tài)一節(jié)。
?

int ?main()
{
???
????
int ?a? = ? - 1 ;
????
char ?b? = ? - 1 ;
????
do
?
{
?cout?
<< ? " please?input?the?a?and?b " ;
?cin?
>> ?a;?
?
if ?(cin.fail())
?
{
??cin.clear();
??cin.rdbuf()
-> pubseekpos(cin.rdbuf() -> in_avail());
?}

?cin?
>> ?b;
?
if ?(cin.fail())
?
{
??cin.clear();
??cin.rdbuf()
-> pubseekpos(cin.rdbuf() -> in_avail());
?}

?}
? while (a? < ? 0 ? || ?b? < ? 0 );
????
??
return ? 0 ;
}
?

?