我想在 Ubuntu 上编写一个 C++ 程序,它会立即对输入做出反应,而无需按 Enter。(-> 我不能使用标题#include <conio.h>
(->由于我在 UNIX 系统上工作,我
例如:我在键盘上按下键“a”,但程序应该显示“p”而不是在终端中显示“a”。
在过去的两天里,我试图用标题做到这一点#include <ncurses.h>
。不幸的是,它不起作用。
因此,我想请教您的请求。
使用 conio.h 它会是这样的:
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
int main(void)
{
char c;
c = getch();
while(true)
{
if(c=='a')
{
putch('p');
}
else
{
putch(c);
}
c = getch();
}
cin.sync();
cin.get();
}
您能否简单地发布工作源代码#include <ncurses.h>
而不是#include <conio.h>
发布工作源代码?
提前非常感谢你!!!
最诚挚的问候
夸克42
谢谢Paulo1205!!!
这是我没有 conio.h的最终代码:
#include <iostream>
#include <string>
#include <unistd.h>
#include <termios.h>
#include <ncurses.h>
using namespace std;
int my_getch(void){
struct termios oldattr, newattr;
unsigned char ch;
int retcode;
tcgetattr(STDIN_FILENO, &oldattr);
newattr=oldattr;
newattr.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newattr);
retcode=read(STDIN_FILENO, &ch, 1);
tcsetattr(STDIN_FILENO, TCSANOW, &oldattr);
return retcode<=0? EOF: (int)ch;
}
int main(void)
{
char c;
c = my_getch();
while(true)
{
if(c=='a')
{
putchar('p'); fflush(stdout);
}
else
{
putchar(c); fflush(stdout);
}
c = my_getch();
}
cin.sync();
cin.get();
}