![](/img/trans.png)
[英]Why is cin.ignore() ignoring the first character of my getline input?
[英]C++: Ignoring input after first cin.ignore
好的,所以這是我的程序的一部分,它基本上是一個重復出現的錯誤消息給用戶,直到輸入有效的輸入。 所以基本上我面臨的問題是,每當我輸入一個無效的數字(例如 0、12 或負數)時,什么都不會輸出,程序將等待另一個輸入,只有這樣它才會將輸入識別為錯誤或有效輸入。 當輸入符號或字母時,這不是問題。 我可以使用任何解決方法嗎?
while (Choice1 < 1 || Choice1 > 11)
{
if(!(cin >> Choice1), Choice1 < 1 || Choice1 > 11)
{
cin.clear();
cin.ignore(512, '\n');
cout << "\n\aError! Please enter a valid input!" << endl;
cout << "Now please enter the first code: ";
cin >> Choice1;
}
}
也許這就是你的意圖:
#include <iostream>
#include <limits>
int main()
{
int Choice1{0};
while (!(std::cin >> Choice1) || Choice1 < 1 || Choice1 > 11)
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "Error! Please enter a valid input!" << std::endl;
std::cout << "Now please enter the first code: " << std::endl;
}
return 0;
}
您可以在此處和/或此處閱讀有關逗號運算符的信息,我認為它不屬於條件表達式的一部分。 另外, if
對while
循環進行范圍限定,我認為您並不是真的想要。 我做了一些額外的小改動,保留了大部分原始結構——仍然可以使用一些工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.