2011-03-28 61 views
0

cin.ignore(100,'\n')工作,如果我只是使用標準cin通過流?C++:在使用cin.ignore之前是否需要使用cin.get()?

例子:

cin >> temp; //enter key input 
if(cin.fail()) 
{ 
    cin.clear(); 
    cin.ignore(100,'\n'); 
} 

或做我必須使用cin.get()?

實施例:

temp=cin.get(); 
if(cin.fail()) 
{ 
    cin.clear(); 
    cin.ignore(100,'\n'); 
} 

或將這些代碼產生相同的結果?

+2

您是否試圖執行它,看看會發生什麼?此外,期望的行爲是什麼,「temp」的類型是什麼? – 2011-03-28 08:07:37

+0

是的,我有,不幸的是,這兩個似乎並沒有按照我喜歡的方式工作,因此這個問題。 temp是一個'int',所以當用戶在鍵盤上混雜時,它應該清除錯誤。它的工作原理是這樣的,但它會打印一個額外的換行符並暫停,直到我再次按回車。 – dukevin 2011-03-28 08:08:37

+0

然後請描述你想如何表現。 – 2011-03-28 08:09:30

回答

0

啊,愚蠢的我,我做了一個函數來調用清理

void clear() 
{ 
    cin.clear(); 
    cin.ignore(100,'\n'); 
} 

,並在我的程序,它調用的函數clear()不止一次。在連續兩次調用clear()而沒有cin輸入的情況下,它會提示輸入空行。

我猜這是造成它的原因。

+0

後續問題:有沒有更有效的方法來清除垃圾的輸入? – dukevin 2011-03-28 08:46:39

+0

不,clear()只是清除一些狀態標誌。調用它兩次沒有害處。 – 2011-03-28 08:59:16

+0

對不起,混亂,我的函數名爲clear()而不是cin.clear()..所以調用我的clear()函數會讓它提示換另一個換行符 – dukevin 2011-03-29 02:16:16

相關問題