Ayuda C++ Solo me lee la priemera linea

Necesito ayuda tengo un fallo tonto en el c++. Soy nuevo. Estoi trabado en la opcion uno del menu. El problema es que del fichero solo me lee la primera linea cuadno esta tiene mas de 1000,
EL fichero contiene texto del modo:
10 LA MUJER PERFECTA;EDWARDS BLAKE;1979;COMEDIA

12 MONOS;GILLIAM TERRY;1995;CIENCIA FICCION

1492 LA CONQUISTA DEL PARAISO;SCOTT RIDLEY;1992;HISTORICA

1941;SPIELBERG STEVEN;1979;AVENTURA

1997 RESCATE EN NUEVA YORK;CARPENTER JOHN;1981;FANTASTICA

20000 LEGUAS DE VIAJE SUBMARINO;FLEISCHER RICHARD;1954;AVENTURAS

2001 UNA ODISEA DEL ESPACIO;KUBRICK STANLEY;1968;CIENCIA FICCION

2010 ODISEA DOS;HYAMS PETER;1984;CIENCIA FICCION

PELICULA.H
#include <iostream>
#include <string>
#include <cstring>
using namespace std;

class Pelicula {
private:
char titulo[53];
char director[20];
char fecha[5];
char genero[16];
public:
Pelicula();
friend ostream& operator<<(ostream &sout, const Pelicula &p);
friend istream& operator>>(istream &sin, Pelicula &p);

};


PELICULA.C

nclude <iostream>
#include <string>
#include <cstring>
#include "Pelicula.h"
using namespace std;

Pelicula::Pelicula () {
titulo[0] = '\0';
director[0] = '\0';
fecha[0] = '\0';
genero[0] = '\0';
}

ostream& operator<<(ostream &sout, const Pelicula &p) {
sout << "Titulo: " << p.titulo << " ";
sout << "Director: " << p.director << " ";
sout << "Fecha: " << p.fecha << " ";
sout << "Genero: " << p.genero << flush;
return sout;
}
istream& operator>>(istream &sin, Pelicula &p) {
sin.getline(p.titulo, 53, ';');
sin.getline(p.director, 26, ';');
sin.getline(p.fecha, 5, ';');
sin.getline(p.genero, 16, '\n');
return sin;
}
PRINCIPAL.C

#include <fstream>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <cstdlib>
#include "Pelicula.h"
using namespace std;

int main () {
Pelicula p;
char opcion;

ifstream fin("cine.tx");
if (! fin) {
cerr << "No puede abrirse " << "cine.tx" << endl;
exit(1);
}

do {
cout << "----------------MENU--------------" << endl;
cout << "(1). Listado de Peliculas." << endl;
cout << "(2). Listado de Peliculas por genero. " << endl;
cout << "(3). Listado de Directores." << endl;
cout << "(4). Listado de Directores y número de películas. " << endl;
cin >> opcion;

switch (opcion) {
case '1': {
while (fin >> p) {
cout << p << endl;
}
}
}
} while (opcion == '0');

return 0;
}
El programa que has puesto al menos a mi no me falla... tengan 5, 500 , 1000 o 10000 entradas en cine.tx
1 respuesta