import std.stdio; import std.algorithm; import std.range; struct TerminatorAdapter(Range, Element) if (isOutputRange!(Range, Element)) { Range r; Element terminator; this(Range r, Element terminator) { this.r = r; this.terminator = terminator; } void put(T)(T t) // ここどうしよう { r.put(t); r.put(terminator); } } TerminatorAdapter!(Range, Element) terminatorAdapter(Range, Element)(Range r, Element terminator) { return TerminatorAdapter!(Range, Element)(r, terminator); } void main() { copy(stdin.byLine(), terminatorAdapter(stdout.lockingTextWriter(), "[end of line]\n")); }
こうかなー?