如何在cin.ignore()

时间:2017-11-12 02:04:53

标签: c++ buffer cin

我编写了一个代码来检查int cin中的char'export'。但我发现我需要在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);
}

1 个答案:

答案 0 :(得分:0)

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

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