我有一個問題。首先,我需要從用戶輸入中讀取一個字符,然後我需要讀取整數。問題是,如果我在第一個cin上輸入多個char,它不會請求輸入整數值。
這是我的代碼片段。
是否有任何重置或清除cin緩衝區的功能。
我是新手,對不起,如果問題是愚蠢的。謝謝。如何在讀取字符後清除cin緩衝區
int *i = new int;
int *c = new char;
std::cin >> *c;
std::cin >> *i;
我有一個問題。首先,我需要從用戶輸入中讀取一個字符,然後我需要讀取整數。問題是,如果我在第一個cin上輸入多個char,它不會請求輸入整數值。
這是我的代碼片段。
是否有任何重置或清除cin緩衝區的功能。
我是新手,對不起,如果問題是愚蠢的。謝謝。如何在讀取字符後清除cin緩衝區
int *i = new int;
int *c = new char;
std::cin >> *c;
std::cin >> *i;
你問:
有什麼功能重設或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;
}
我不知道你爲什麼要在這裏創建指針。我也不知道如何在嘗試爲int*
分配char
時沒有收到編譯器錯誤。如果你需要在一個int和焦炭閱讀請執行以下操作:
int i;
char c;
std::cin >> i;
std::cin >> c;
澤塔一樣在評論中建議,聽起來像是你可能需要做下的一些閱讀++。希望這可以幫助。
可以成爲一個新手。不過,我強烈推薦你去買書。並且忘記'新',至少再過一個月。 – Zeta 2014-12-02 19:01:06