为什么cin.ignore()行为不正常?

时间:2013-07-11 19:16:29

标签: c++

所以我一直试图让我的C ++程序“按下继续”,我收集的是每个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()的其他组合几乎有同样的问题我尝试过 - 它每次都不会做同样的事情。有时它会等待两次输入,有时一次也可以。有谁知道发生了什么事?

1 个答案:

答案 0 :(得分:1)

Streams只是这里工作的错误工具。 C ++标准没有可移植的方式来控制控制台。 Streams是一种抽象,允许读/写字符序列,而不是交互式UI。

为了可靠地获得您想要的行为,您需要使用第三方库(如curses),或直接与目标平台的控制台API对话。