簡體   English   中英

C++:在第一個 cin.ignore 之后忽略輸入

[英]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;
}

您可以在此處和/或此處閱讀有關逗號運算符的信息,我認為它不屬於條件表達式的一部分。 另外, ifwhile循環進行范圍限定,我認為您並不是真的想要。 我做了一些額外的小改動,保留了大部分原始結構——仍然可以使用一些工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM