Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/11/2015, 03:14
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: problema con bucle

Según lo que has puesto en tu enunciado la última línea empieza con '...', pero tú estás leyendo primero un double, después un char y, por último un string...

La lectura del double te empezará dando error, ya que '...' no se puede convertir a double, del resto de lecturas ya no te puedes fiar ya que no has reseteado el bit de error, pero aun así, suponiendo que funcionasen correctamente... ¿qué estás leyendo exactamente?

opción 1:
* double no lee nada
* char lee un '.'
* string lee "..", que no es igual a "...", luego el programa sigue leyendo pero ya ha llegado al final del fichero... desastre asegurado

opción 2:
* double lee el primer caracter pero no puede convertirlo a float
* char lee un '.'
* string lee ".", que tampoco es igual a "..."

opción 3:
...

lo mires como lo mires no hay opción buena.

Puedes hacer varias cosas:

1. Leer toda la línea, verificar si es igual a "..." para finalizar y, en caso contrario parsear los datos leyendo el string.
2. Llamar al método peek de ifstream. Este método te devuelve el siguiente carácter pero no lo saca del fichero. Si el caracter devuelto es '.' posiblemente estés ante el final del fichero. Si no es así lanzas la lectura normal
3. Después de leer el double compruebas los bits de estado de ifstream... si se ha producido un error posiblemente sea porque estás leyendo los puntos finales.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.