如何在D 2.0中使用带有Stdin的InputRange!(dchar)?

时间:2011-06-07 07:11:48

标签: d

我正在尝试编写通用代码,可以将任何字符流(dchar s)lex到任何地方......无论是来自文件还是来自stdin进入另一个文件或stdout

我该怎么做?

似乎stdinstdout 痛苦InputRangeOutputRange一起使用(因为我每次必须手动包裹它们) ),我不能使用std.stdio.Stream,因为它给了我字节,而不是字符串...而且我找不到任何适配器可以轻松地从一个转换为另一个。

如此有效,我找不到在我的程序中使用stdin / stdout的好方法

是否有例如比如.NET的TextReader可以抽象地将文本读作InputRange!dchar,无论其输入是字符串,控制台还是文件?

1 个答案:

答案 0 :(得分:2)

采用dchar输入范围的正确函数是:

void func(Range)(Range input)
    if(isInputRange!Range && is(ElementType!Range == dchar))
{}

但是,您必须具有从stdin获取其输入的输入范围。有人说需要重做尚未完成的stdio / streaming。 stdin有undocumented range dchar