C++でファイルパスを引数にしたコンストラクタだけだとつらい

ファイルパスを引数にして,コンストラクタで読んで…ってのは何も考えていないと結構やりがち. しかし,これだけだとテスト書くのがつらい. テストが実行される場所を気にしないといけないし, 例外どうするかってのもある.

istream& を引数にしたやつがあると,単体テストistringstream が使える. 短いテストケースならソースに埋め込むことができて楽. 例外も,渡された時に exceptions が設定されていれば投げるし, 終わった後に failbad を見ても良い.

例外 OK な場合も例外 NG な場合もたぶん救える*1

*1:C++のIOの設計そのものが NG な人は救えない