簡體   English   中英

如何在 cin.ignore() 中跳過“輸入”

[英]How to skip 'enter' in cin.ignore()

我寫了一個代碼來檢查 int cin 中的 char 'exit'。 但是我發現我需要在cin.ignore設置分隔符,例如'\\n'並在運行命令時輸入它,我認為這不友好。

如何更改代碼以跳過提取步驟,也許使用其他代碼而不是cin.ignore

對不起,所有試圖閱讀我的英語並回答的人,因為我不是英語母語用戶。 我的意思是cin.ignore是提取和丟棄字符,直到找到給定的字符,是否有辦法清除 C++ 中的 cin 緩沖區並丟棄字符而不提取?

void checkcin(int &y)
{
    string input = "", ans;

    cin.clear();
    cin.ignore(INT_MAX, '\n');
    getline(cin, input);

    while (input == "exit")
    {
        cout << "Are you sure to exit: ";
        cin >> ans;
        if (ans == "yes")
        {
            cout << "Bye." << endl;
            exit(0);
        }
        else if (ans == "no")
        {
            cout << "Then welcome back!";

            cout << "Input again: ";
            cin >> input;
        }
    }
    y = std::stoi(input);
}

您正在使用的“std::cin.ignore()”中的第一個參數歸結為一個非常大的數字。 這應該是輸入緩沖區可以容納的最大字符數。 這個數字在不同的系統上可能不同,甚至在不同編譯器的頭文件上也可能不同。

您需要按 Enter 兩次,因為緩沖區中沒有可忽略的內容。 它正在等待輸入的東西忽略。 有些人會在“return 0;”之前使用它來暫停程序。

暫無
暫無

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

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