2014-12-02 53 views
0

我有一個問題。首先,我需要從用戶輸入中讀取一個字符,然後我需要讀取整數。問題是,如果我在第一個cin上輸入多個char,它不會請求輸入整數值。
這是我的代碼片段。
是否有任何重置或清除cin緩衝區的功能。
我是新手,對不起,如果問題是愚蠢的。謝謝。如何在讀取字符後清除cin緩衝區

int *i = new int; 
int *c = new char; 
std::cin >> *c; 
std::cin >> *i; 
+0

可以成爲一個新手。不過,我強烈推薦你去買書。並且忘記'新',至少再過一個月。 – Zeta 2014-12-02 19:01:06

回答

0

你問:

有什麼功能重設或CIN的清除緩衝區。

還有std::istream::ignore()。在給定的鏈接上有示例代碼,它顯示瞭如何使用該函數。

在你的情況,我認爲是這樣的:

int i; 
int c; 
std::cin >> c; 
std::cin >> i; 

if (std::cin.bad()) { 
    std::cin.clear(); // unset failbit 
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // skip bad input 
    std::cin >> i; 
} 
-1

我不知道你爲什麼要在這裏創建指針。我也不知道如何在嘗試爲int*分配char時沒有收到編譯器錯誤。如果你需要在一個int和焦炭閱讀請執行以下操作:

int i; 
char c; 

std::cin >> i; 
std::cin >> c; 

澤塔一樣在評論中建議,聽起來像是你可能需要做下的一些閱讀++。希望這可以幫助。