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

C++ cin.ignore() skip loop

本文关键字:循环 cin ignore C++      更新时间:2023-10-16

我在程序中创建了一个 for 循环,因此您必须按回车键才能继续。我使用 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。这使得它跳过迭代,玩家不必按回车键继续。我刚刚包含了第二个cin.ignore,但我不希望他们必须按两次回车键。有没有办法仅在有缓冲区时才使用第二个cin.ignore ,或者有其他方法可以解决这个问题?

总是有一个缓冲区。 在没有参数值的情况下单独调用std::cin.ignore(),只需跳过缓冲区中的下一个字符,该字符可能是也可能不是ENTER按的'n'字符。

要跳过缓冲区中的所有内容,直到下一次ENTER键,请使用std::cin.ignore(std::numeric_limits<streamsize>::max(), 'n')

你可以替换

cin.ignore();

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

其中第二个选项将忽略所有字符,包括 Enter 键放入流中的换行符。