为什么getch()需要按下一个键才能继续执行其余的代码?
Why does getch() require a key to be pressed to continue through rest of code?
我有一个函数,当按下某些键时执行其他函数。如果's'被按下,它会射击玩家。如果按下"h",只会伤害玩家。问题在于select = getch();下图:
void* command(void* data)
{
choice = getch(); //This is where the problem begins...
cout << "Command Promptnn"; //I must click enter twice to view this output. why is this???
while (health > 0)
{
if (choice == 's')
{
playershot();
}
if (choice == 'h')
{
playerharm();
}
}
}
当执行这个命令时,由于某些原因,控制台等待我按两次ENTER,然后才会计数<<"命令提示符";。只有在2个ENTER之后,我才会看到"命令提示符"输出。为什么getch()等待我输入我的字母和2个回车?无论我在这个函数中使用getch(),它都工作得很好,通常不需要我按enter。什么在这个代码是错误的,让我按ENTER两次,最后得到"命令提示符"?谢谢。
getch
从输入缓冲区中读取一个字符。根据您如何配置输入缓冲,您可能不会立即在缓冲区中键入字符—它们可能被保存在驱动程序或其他地方,直到发生其他事件(例如按下'enter')。
如何配置输入处理取决于您的系统/操作系统。
你应该_get。根据MSDN, getch已被弃用,应该使用_getch:
这个POSIX函数从Visual c++ 2005开始已弃用。使用ISO c++的一致性_getch。
这里是_getch的链接
相关文章:
- C++ 在信号处理程序后继续执行
- 超时后,线程睡眠不会继续执行
- 在构造函数中删除后继续执行
- 由于找不到cpprest_2_10.dll,代码执行无法继续
- c++:if 语句无法正常运行,并继续执行无效输出
- 英特尔 Pin:RECEIVED_ACCESS_FAULT异常后正确继续执行
- 如果发生错误,则返回错误值,否则,继续执行函数
- 睡眠线程或进程的指令是否在线程/进程休眠时继续执行?
- 使用 UWP 中的 IAsyncOperation 继续执行任务
- C++可执行文件继续寻找序号入口点
- 是什么导致程序在我继续执行另一个功能之前停止
- 使用 ASSERT_DEATH 时,有没有办法在应用程序终止后自动继续执行所有测试
- 现代C++.从继续执行的工作线程返回数据结构
- 在击中断点并继续执行VS时,如何在运行时自动修改变量的值
- 在调用GNUPLOT之后,如何继续执行C 代码
- OpenMP 构造,在至少 1 个线程完成后立即继续执行
- 如果我已经完成了当前功能,我该如何选择继续执行另一个功能
- 循环浏览文件夹中的所有文件以继续执行脚本
- 希望定期执行一个函数,但继续程序循环的其余部分
- 在 GDB 中调试多线程服务器 - 查找每个线程的状态.执行时继续并停止