Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/01/2010, 08:49
Avatar de genuine_carlosV2
genuine_carlosV2
 
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: EOF() no funciona

Me autorespondo por si a alguien le interesa un algoritmo de lectura de archivos CSV:
Código C++:
Ver original
  1. void loadDataSet() {
  2.     double value;
  3.     char c;
  4.  
  5.     while( !dataSetFile.eof() ) {
  6.         Register r;
  7.         r.cluster = -1;
  8.         do {
  9.             dataSetFile >> value;
  10.             dataSetFile >> c;
  11.             r.value.push_back( value );
  12.         } while( ( c == ',' ) && ( dataSetFile.good() ) );
  13.         dataSet.push_back( r );
  14.     }
  15. }

La clave era 'dataSetFile.good()'. Sin esto, puesto que el último registro no tiene ningún carácter, en la última posición, no leía nada ni asignaba nada a la variable y, por tanto, tenía el antiguo valor y nunca ejecutaba el EOF()

También mencionar que resulta que si que coge el número con la precisión decimal correcta pero no lo mostraba por pantalla