Buenas a todos!
Mi pregunta/problema es el siguiente:
Tengo un archivo CSV con el siguiente formato:
<double>,<double>,<double>,...,<double>
<double>,<double>,<double>,...,<double>
...
<double>,<double>,<double>,...,<double>
Es decir, los números estan separados por comas (,). Al finalizar una hilera de números (un registro), hay un salto de linea.
A priori no se ni cuantos registros hay (hileras) ni cuantos campos tiene cada registro (columnas).
Para leer y cargar este archivo, he echo el siguiente algoritmo (tanto en C como en C++):
Código:
void loadDataSet() {
ifstream dataSetFile;
dataSetFile.open( "test.csv", ios::in );
char c;
double value;
while( !dataSetFile.eof() ) {
Register r;
do {
dataSetFile >> value;
dataSetFile >> c;
cout << "Dato: " << value << endl;
r.value.push_back( value );
} while( c == ',' );
}
}
Como comenté, también lo probé con C (mediante 'fscanf' pero el resultado fué el mismo).
El resultado de este algoritmo es que me lee todos los números pero:
1) La precisión decimal que lee es de 6 cifras decimales cuando los números son en realidad de 12 cifras decimales
2) Lee todos los números hasta el final pero cuando llega al final del archivo, continua leyendo indefinidamente y capturando como 'value' el último número del archivo
Alguna idea de como hacer para coger todos los decimales? Y como puedo hacer para que el EOF() funcione como dios manda?
A ser posible, podrían explicarme porque el EOF() no me funciona?
Muchas gracias por su tiempo
Carlos