C ++ cin.ignore()跳过循环

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

我在程序中创建了一个for循环,因此您必须按Enter才能继续。我是使用cin.ignore()完成的。这是我正在使用的代码的基本思想。

for (int i = 0; i < 5; i++) {  // loop will do it for each player data
    cout << "Press Enter to Continue ";
    cin.ignore();
    system("cls");
    cout << "Playes Data" << endl;
}

此代码在玩家决定输入某些内容而不是仅按Enter之前一直有效。据我了解,因为玩家输入了一些东西,所以这意味着会有缓冲。您可以仅使用cin.ignore来摆脱缓冲区。这样一来,它就可以跳过迭代,并且播放器无需按Enter即可继续。我刚刚添加了第二个cin.ignore,但我不希望他们必须按两次Enter键。仅在有缓冲区的情况下,才有使用第二个cin.ignore的方法,还是有其他方法来处理此问题?

c++ cin
2个回答
1
投票

总是有一个缓冲区。本身不带任何参数值的调用std::cin.ignore()只是跳过缓冲区中的下一个字符,它可能是也可能不是通过ENTER按下的'\n'字符。

要跳过缓冲区中的所有内容,最多按next ENTER,请使用std::cin.ignore(std::numeric_limits<streamsize>::max(), '\n')


0
投票

您可以替换

cin.ignore();

with

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

第二个选项将忽略所有字符,包括回车键,将回车键放入流中。

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