まあとりあえず
・while (!fin.eof()) {} というやり方は大抵望み通りの動作にはならない
・printfにstringをそのまま渡しても大抵望みどおりの動作にはならない
とだけ