Enterキーを押さなくても入力にすぐに反応するUbuntuでC++プログラムを書きたいと思います。#include <conio.h>
(-> UNIX システムで作業しているため、ヘッダーを使用できません)
例: キーボードでキー "a" を押しますが、端末に "a" が表示される代わりに、プログラムは "p" を表示するはずです。
過去 2 日間、ヘッダーでこれを実行しようとしました#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();
}