我正在尝试编写通用代码,可以将任何字符流(dchar
s)lex到任何地方......无论是来自文件还是来自stdin
进入另一个文件或stdout
。
我该怎么做?
似乎stdin
和stdout
痛苦与InputRange
和OutputRange
一起使用(因为我每次必须手动包裹它们) ),我不能使用std.stdio.Stream
,因为它给了我字节,而不是字符串...而且我找不到任何适配器可以轻松地从一个转换为另一个。
如此有效,我找不到在我的程序中使用stdin
/ stdout
的好方法。
是否有例如比如.NET的TextReader
可以抽象地将文本读作InputRange!dchar
,无论其输入是字符串,控制台还是文件?
答案 0 :(得分:2)
采用dchar
输入范围的正确函数是:
void func(Range)(Range input)
if(isInputRange!Range && is(ElementType!Range == dchar))
{}
但是,您必须具有从stdin获取其输入的输入范围。有人说需要重做尚未完成的stdio / streaming。 stdin有undocumented range dchar
。