This question already has answers here:
Why is a second cin.ignore() necessary?

(2个答案)


6年前关闭。




因此,我一直在尝试让我的C++程序“按Enter键继续”,这是每个C++程序员在成年之前都要经历的一个令人讨厌的阶段。摆弄后,我相信一些随机的建议并使用:
while(userWins<2)
{
    roundResult = playRound();

    if(roundResult>0)
    {
        userWins++;
        cout << "Du vann! Det står nu " << userWins << "-" << cpuWins << "." << endl ;
        cin.get();
        cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
    }
}

与我尝试过的cin.get()和cin.ignore()的所有其他组合几乎存在相同的问题-它不会每次都执行相同的操作。有时它等待两个输入笔划,有时则可以。有人知道发生了什么吗?

最佳答案

在这里,流简直就是错误的工具。 C++标准没有可移植的方式来控制控制台。流是一种抽象概念,它允许读取/写入字符序列,而不是用于交互式UI。

为了可靠地获得所需的行为,您将需要使用curses之类的第三方库,或者直接与目标平台的控制台API对话。

关于c++ - 为什么cin.ignore()行为不稳定? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17601580/

10-15 04:29