在Linux上使用kbhit()和getch()
在Windows上,我具有以下代码来查找输入而不会中断循环:
#include <conio.h>#include <Windows.h>
#include <iostream>
int main()
{
while (true)
{
if (_kbhit())
{
if (_getch() == 'g')
{
std::cout << "You pressed G" << std::endl;
}
}
Sleep(500);
std::cout << "Running" << std::endl;
}
}
但是,看到没有conio.h
,在Linux上实现相同目标的最简单方法是什么?
回答:
上面引用的ncurses howto可能会有所帮助。这是一个示例,说明如何像conio示例一样使用ncurses:
#include <ncurses.h>int
main()
{
initscr();
cbreak();
noecho();
scrollok(stdscr, TRUE);
nodelay(stdscr, TRUE);
while (true) {
if (getch() == 'g') {
printw("You pressed G\n");
}
napms(500);
printw("Running\n");
}
}
请注意,对于ncurses,iostream
不使用标头。这是因为将stdio与ncurses混合会产生意外结果。
顺便说一下,ncurses定义TRUE
和FALSE
。正确配置的ncurses将为ncurses使用与bool
用于配置ncurses的C
++编译器相同的数据类型。
以上是 在Linux上使用kbhit()和getch() 的全部内容, 来源链接: utcz.com/qa/418995.html