Wie mit Nans behandeln, wenn sie in einer CSV-Datei in C ++ lesen
Frage
Ich lese in einer CSV-Datei von Zeitreihendaten in ein C ++ Programm. Meine Daten jedoch enthält einige NaN ist. Zum Beispiel:
1-Jul-2010, 1.0
2-Jul-2010, 2.0
3-Jul-2010, NaN
4-Jul-2010, 3.0
Um mit dieser ich ein kurzes Skript in Matlab geschrieben, die alle Nans mit 0.0 ersetzt - Ich las dann in der neuen Datei ohne die Nans. Gibt es eine einfache Art und Weise oder zu vermeiden Diese Vorverarbeitung?
Danke!
Lösung
Wie David Da bereits erwähnt, Sie müssen nicht im Voraus Prozess die Datei überhaupt. strtof () und strtod () sind beide in der Lage, die NaN Zeichenfolge an den NaN float / double-Wert zu konvertieren.
Wenn Sie die Werte mit 0,0 in Ihrem Datensatz ersetzen möchten, können Sie dies mit dem isnan () Funktion.
if (isnan(val))
{
val = 0.0;
}
Andere Tipps
Möchten Sie das Ergebnis wollen ein Schwimmer (oder doppelt) NaN sein -. Dann mit der stdlib strtod () Funktion
Wenn Sie mit ihm in seinem eigenen Weg umgehen wollen (auf 0 setzen etc) dann jede Zeile in einen String zuerst lesen, Check für NaN mit strcmp (), dann analysiert die Zeichenfolge je nachdem, was Sie finden - einfacher, wenn NaN kann nur in einer Spalte angezeigt werden.