std::getline()で一行をstd::stringに読み込み、それをstd::stringstreamに
ぶち込んで、1や3を前提として読んで、エラーが起きればclear()して
seekg()で先頭に戻し、2を前提で読み込む。