下のように,標準入力 din を foreach で一行ずつ読み込んだらうまくいかなかった.
import std.cstream;
int main(char[][] args)
{
foreach(char[] line; din)
{
dout.writefln(line);
}
return 0;
}
なぜかリダイレクトによる標準入力では問題は起こらないが,
a.exe < textfile
パイプによる標準入力ではループが終了しなくなる!
type textfile | a.exe
なんでやねん,というわけでちょっと一段階バッファを介してみる.
import std.cstream;
int main(char[][] args)
{
Stream dinbuf = new BufferdStream(din);
foreach(char[] line; dinbuf)
{
dout.writefln(line);
}
dinbuf.close();//念のため
return 0;
}
リダイレクト,パイプの両方が期待通りに動作するようになった.
めでたいが, din はそういうものなのか?
すごくめんどいのでなんとかしてくれないかなあ.