如何跳过cin.ignore()中的'enter'

问题描述 投票:0回答:1

我编写了一个代码来检查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);
}
c++ buffer cin flush ignore
1个回答
0
投票

您正在使用的“ std :: cin.ignore()”中的第一个参数只是很大的数字。这应该是输入缓冲区可以容纳的最大字符数。在不同的系统上,甚至对于不同的编译器,头文件中的此数字可能都不同。

您需要按两次Enter键,因为缓冲区中没有可忽略的内容。它正在等待输入忽略的内容。有些人会使用它在“返回0;”之前暂停程序。]

© www.soinside.com 2019 - 2024. All rights reserved.