gpt4 book ai didi

windows - D编程语言——不用回车输入

转载 作者:可可西里 更新时间:2023-11-01 10:05:51 26 4
gpt4 key购买 nike

我正在研究 D 编程语言,想知道我该如何无需用户按回车键即可抓取字符。

我想要的伪代码示例:

while(true){
if(userHasPressedChar()){
writeln(getChar());
}
}

在 C++ 中,我可以使用 conio.h 的“getch()”,但我还没有在这里找到任何类似的东西。

编辑:我使用的是 Windows 7。

编辑 2:我在 this forum 找到了解决方案,我可以更改它以供我自己使用。 主模块;

import std.stdio;
import core.sys.windows.windows;


void main() {
auto hCon = GetStdHandle(STD_INPUT_HANDLE);
FlushConsoleInputBuffer(hCon);
for(;;) { // in default console mode, ctrl-C will terminate
INPUT_RECORD inrec;
DWORD numread;
while(inrec.EventType != KEY_EVENT) {
WaitForSingleObject(hCon, INFINITE);
ReadConsoleInputW(hCon, &inrec, 1, &numread);
}
auto keyEvent = inrec.KeyEvent;
writefln("VK: %x \tChar: %x \tState: %x",
keyEvent.wVirtualKeyCode,
keyEvent.UnicodeChar,
keyEvent.dwControlKeyState);
}
}

最佳答案

您还可以使用各种库。例如,我的 terminal.d 可以做到这一点 https://github.com/adamdruppe/arsd/blob/master/terminal.d适用于 Windows 和 Linux。

这是我书中的一个示例文件(如果您有兴趣,请参阅我的 SO 配置文件)演示用法 http://arsdnet.net/dcode/book/chapter_12/07/input.d

import terminal;

void main() {
auto terminal = Terminal(ConsoleOutputType.linear);
auto input = RealTimeConsoleInput(&terminal, ConsoleInputFlags.raw);
terminal.writeln("Press any key to exit");
auto ch = input.getch();
terminal.writeln("Bye!");
}

输入对象对控制台模式进行必要的转换以关闭行缓冲并自行清理。创建一个后,您将拥有类似于 conio 的 input.getch()input.kbhit() 方法。

如果您想了解更高级的用法,我的终端库还提供其他事件类型,例如鼠标输入。

要编译,只需下载 terminal.d 并将其添加到您的命令中,例如dmd yourfile.d terminal.d.

关于windows - D编程语言——不用回车输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26015697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com