¿Cómo lidiar con NaN de la lectura en un archivo csv en C ++
Pregunta
Estoy leyendo en un archivo CSV de datos de series temporales en un programa en C ++. Mis datos contiene sin embargo algunos de Nan. Por ejemplo:
1-Jul-2010, 1.0
2-Jul-2010, 2.0
3-Jul-2010, NaN
4-Jul-2010, 3.0
Para hacer frente a esta Escribí un pequeño script en Matlab que sustituye todo el NaN de con 0.0 - luego leí en el nuevo archivo sin el NaN de. ¿Hay una manera fácil o evitar este pre-procesamiento?
Gracias!
Solución
Como David Dado que ya se ha mencionado, usted no tiene que pre-procesar el archivo en absoluto. strtof () y strtod () son ambos capaces de convertir la cadena NaN a la / doble valor NaN flotador.
Si desea reemplazar los valores con 0.0 en su conjunto de datos, puede hacerlo a través de la función isnan ().
if (isnan(val))
{
val = 0.0;
}
Otros consejos
¿Quieres que el resultado sea un flotador (o doble) NaN -. A continuación, utilizar la función stdlib strtod ()
Si usted quiere tratar con él en su propio camino (ajustado a 0, etc) y luego leer cada línea en una cadena primero, cheque por NaN con strcmp () y luego analizar la cadena en función de lo que se encuentra - más fácil si NaN sólo puede aparecer en una columna.