D/stdin と readLine と ReadException

Top / D / stdin と readLine と ReadException

v0.122

while (!stdin.eof()) {
	char c;
	stdin.read(c);
	text ~= c;
}

上のようなコードで標準入力からchar[]に読み込もうとすると ReadException が投げられる。
eof()が機能していない。
.seekable が false だと eof()が機能しないため。
stdin のところが Fileのインスタンスだったりすると .seekable が true なのですんなり動く。
readLine()がstdinでも普通に動くのは、このメソッドの中は ReadException を catchするようになっているから。

結論、stdin と Streamは同じようには扱えない。

try {
	while (!stdin.eof()) {
		char c;
		stdin.read(c);
		text ~= c;
	}
} catch (ReadException e) {
	if (!stdin.eof()) throw e;
}

readLine() 式の解決法。
例外が飛ぶ頃には EOF に達したというフラグが立っている。
Streamもこれで扱えるので一応同じ扱いはできますが・・・なんかねぇ。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-05-21 (土) 01:08:24 (6914d)