stdin
- глобальная переменная в std.stdio
. Это std.stdio.File
. Итак, почти все операции, которые вы можете выполнять на File
, который открыт только для чтения, вы можете делать на stdin
. Скорее всего, вас будут интересовать две функции: readln()
и readf()
(обе они могут быть вызваны без явного использования stdin
, и readf()
фактически уникален для stdin
, а не является частью File
, так что вы не можете явно использовать stdin
). readln()
читает в строке от stdin
. readf()
позволяет читать в формате ввода (аналогично scanf()
в C). Эта программа:
import std.stdio;
import std.string;
void main()
{
write("> ");
auto input = strip(stdin.readln());
writeln(input);
write("> ");
float f;
readf("%f", &f);
writeln(f);
}
может привести к следующему:
> Привет, мир
Привет, мир
> 2,7
2,7
Итак, это довольно просто. Лично я бы, скорее всего, использовал readln()
, а затем проанализировал бы полученную строку, если это необходимо (вероятно, с std.conv.parse()
), а не readf()
, но readf()
, очевидно, также имеет свои применения.
Если вы ищете события от нажатия клавиш, а не только от ввода текста, я вполне уверен, что вам придется вызывать для этого внешний библиотека (предположительно, написанную на C). В конце концов, для того, чтобы сделать это в C или C ++, вам не нужно использовать библиотеку, такую как ncurses? В таком случае, D, безусловно, не будет ничего делать в стандартной библиотеке. Это зависит от ОС. Я предполагаю, что кто-то может написать оболочку D вокруг ncurses (и, возможно, даже оболочку, которая была кроссплатформенной), но в стандартной библиотеке такого нет. Функциональность ввода-вывода D построена на основе стандартного ввода-вывода C, поэтому, хотя она и улучшается, она, как правило, ограничивается способами, аналогичными тем, которые ограничивают стандартные C и C ++.