Dでキーボード入力を取得するにはどうすればよいですか?標準のC関数を使用する必要がありますか、それを行うにはD方法がありますか?Dでキーボード入力を取得するには?
編集:これは、ユーザーがEscキーを押したときのように、標準入力からのテキスト入力だけでなく、キー押下でイベントを取得することを意味します。
Dでキーボード入力を取得するにはどうすればよいですか?標準のC関数を使用する必要がありますか、それを行うにはD方法がありますか?Dでキーボード入力を取得するには?
編集:これは、ユーザーがEscキーを押したときのように、標準入力からのテキスト入力だけでなく、キー押下でイベントを取得することを意味します。
標準のC関数を使用する必要があります。
GUIライブラリを使用している場合は、バインドできるキーイベントが存在する可能性があります。
ありがとうございます - とにかくこのプロジェクトでSDLを使用するつもりですが、先にそれを行う方法があるのだろうかと思っていました。 – bfops
// Reads stdin and writes it to stdout.
import std.stdio;
int main()
{
char[] buf;
while (stdin.readln(buf))
write(buf);
return 0;
}
Source。お役に立てれば!
stdin
は、std.stdio
のグローバル変数です。それはstd.stdio.File
です。だから、ほとんどの操作はFile
でしか読めないので、stdin
で行うことができます。あなたが興味ある可能性が最も高いです二つの機能はreadln()
とreadf()
(明示的stdin
を使用しなくてもと呼ばれ、readf()
が実際にstdin
に固有ではなく、File
の一部であることができ、どちらも、そうあなたできないです明示的にstdin
を使用してください)。 readln()
は、stdin
から行を読み込みます。 readf()
を使用すると、書式付き入力を読み取ることができます(Cのscanf()
に似ています)。このプログラム:
import std.stdio;
import std.string;
void main()
{
write("> ");
auto input = strip(stdin.readln());
writeln(input);
write("> ");
float f;
readf("%f", &f);
writeln(f);
}
は以下につながる可能性:
> Hello Worldの
ハロー世界
> 2.7
2.7
だから、それは非常に簡単です。個人的には、おそらくreadln()
を使用し、readf()
を使用するのではなく、必要に応じて結果の文字列を解析します(おそらくstd.conv.parse()
)。readf()
も同様に使用されています。
テキスト入力ではなく、キープレスからのイベントを探しているなら、私はそれについて外部のlibary(おそらくC言語で書かれたもの)を呼び出さなければならないと確信しています。結局のところ、CやC++でこれを行うには、ncursesなどのライブラリを使用する必要はありませんか?その場合、Dは標準ライブラリでそれを行うことはまったくないでしょう。これはOS特有のものです。私は、誰かがncursesの周りにDラッパーを書くことができたと思うが(そしてクロスプラットフォームであったラッパーさえも)、標準ライブラリにそのようなものはない。 DのI/O機能は標準のC I/Oの上に構築されているため、改良されていますが、標準のCやC++が制限されているのと同様の方法で制限される傾向があります。
Downvote?私は何を間違って言ったのですか?あなたが私に言わなければ、私は知らないだろうし、改善することもできない。 –
間違いなく沈黙の下で誰かに反対するupvote。誰かがdownvoteを与えている場合は、いつかSOにコメントが必要です。 – biocyberman
どのようなOSがあり、どのようなアプリを構築していますか?コマンドラインツール? GUIベース? – 0scar