在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定义TRUEFALSE。正确配置的ncurses将为ncurses使用与bool用于配置ncurses的C

++编译器相同的数据类型。

以上是 在Linux上使用kbhit()和getch() 的全部内容, 来源链接: utcz.com/qa/418995.html

回到顶部