while (!feof()) 系のやり方の駄目具合は、
最終行に改行だけの行(空行)がないファイルや
最後に改行がないファイルを扱ってみるとわかる。
なぜそうなるかは、feof()の仕組みを考えながら動きを追ってみるとよい。
もちろん、fin.eof()でも同じ。