Comment traiter de NaN lors de la lecture dans un fichier csv en C ++
Question
Je lis dans un fichier csv des données de séries chronologiques dans un programme C ++. Mes données contient cependant certains NaN est. Par exemple:
1-Jul-2010, 1.0
2-Jul-2010, 2.0
3-Jul-2010, NaN
4-Jul-2010, 3.0
Pour faire face à ce que j'ai écrit un script court dans Matlab qui remplace tous les NaN est avec 0.0 - Je lis alors dans le nouveau fichier sans NaN de. Est-il un moyen facile d'éviter ou cette pré-traitement?
Merci!
La solution
Comme David Comme déjà mentionné, vous n'avez pas de pré-traiter le fichier du tout. strtof () et strtod () sont tous deux capables de convertir la chaîne NaN au flotteur NaN / double valeur.
Si vous voulez remplacer les valeurs avec 0.0 dans votre ensemble de données, vous pouvez le faire en utilisant la fonction isnan ().
if (isnan(val))
{
val = 0.0;
}
Autres conseils
Voulez-vous que le résultat soit un flotteur (ou double) - NAN. Puis utilisez la fonction strtod stdlib ()
Si vous voulez traiter dans votre propre chemin (mis à 0 etc) a ensuite lu chaque ligne dans une chaîne d'abord, vérifiez NaN avec strcmp () analyser ensuite la chaîne en fonction de ce que vous trouvez - plus facile si NaN ne peut apparaître dans une colonne.