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

我正在尝试编写通用代码,可以将任何字符流(dchars)放入任何地方……无论是从文件还是从stdin到另一个文件或stdout.

我该怎么做呢?

似乎stdin和stdout与InputRange和OutputRange一起使用很痛苦(因为我每次都必须手动包装它们),而且我不能使用std.stdio.Stream,因为它给了我字节,而不是字符串…而我找不到任何适配器可以轻松地从一个转换为另一个.

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

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

最佳答案 获取dchar输入范围的正确函数是:

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

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

点赞