如何在D中获得键盘输入?你是否必须使用标准的C函数,或者有没有一种方法可以做到这一点?如何在D中获取键盘输入?
编辑:通过这个我的意思是在按键上获得事件,就像用户按下ESC时,不仅仅是来自stdin的文本输入。
如何在D中获得键盘输入?你是否必须使用标准的C函数,或者有没有一种方法可以做到这一点?如何在D中获取键盘输入?
编辑:通过这个我的意思是在按键上获得事件,就像用户按下ESC时,不仅仅是来自stdin的文本输入。
您将需要使用标准C函数。
虽然如果您使用的是GUI库,那么可能会绑定到关键事件。
谢谢 - 我将在这个项目中使用SDL,但我想知道是否有办法做到这一点。 – bfops 2011-01-06 12:10:54
// 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
的hello world
> 2.7
2.7
所以,这是非常简单的。就个人而言,我最有可能使用readln()
,然后解析所得到的字符串(可能与std.conv.parse()
),而不是使用readf()
,但readf()
显然也有其用途。
如果你正在寻找从按键而不是仅仅是文本输入的事件,我敢肯定,你将不得不打电话给外部库(据推测是用C编写的)。毕竟,要用C或C++来做到这一点,难道你不必使用像ncurses这样的库吗?既然如此,那么D在标准库中肯定没有什么可做的。这是特定于操作系统的。我想有人可以在ncurses上编写D封装(甚至可能是跨平台的封装),但标准库中没有这样的东西。 D的I/O功能建立在标准C I/O的基础之上,因此尽管它的性能有所提高,但它的使用方式与标准C和C++的限制方式相似。
Downvote?我说错了什么?如果你不告诉我,我不会知道,也无法改善。 – 2011-01-06 17:59:35
肯定会赞成反对一个沉默寡言的人。希望有一天,如果有人给予低估,那么需要评论。 – biocyberman 2018-02-14 08:34:50
你在操作什么操作系统?你在建什么样的应用程序?命令行工具?基于GUI的? – 0scar 2011-01-06 09:48:55