我在程序中创建了一个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的方法,还是有其他方法来处理此问题?
总是有一个缓冲区。本身不带任何参数值的调用std::cin.ignore()
只是跳过缓冲区中的下一个字符,它可能是也可能不是通过ENTER按下的'\n'
字符。
要跳过缓冲区中的所有内容,最多按next ENTER,请使用std::cin.ignore(std::numeric_limits<streamsize>::max(), '\n')
。
您可以替换
cin.ignore();
with
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
第二个选项将忽略所有字符,包括回车键,将回车键放入流中。