Как бороться с NAN, при чтении в файле CSV в C ++
Вопрос
Я читаю в файле CSV данных серии Time в программу C ++. Мои данные, однако, содержит некоторые нан. Например:
1-Jul-2010, 1.0
2-Jul-2010, 2.0
3-Jul-2010, NaN
4-Jul-2010, 3.0
Чтобы разобраться с этим, я написал короткий скрипт в Matlab, который заменяет все NAN с 0,0 - я тогда читаю в новом файле без нан. Есть ли простой способ или избегать этой предварительной обработки?
Спасибо!
Решение
Как уже упоминалось Давид, вы не должны предварительно обработать файл вообще. STRTOF () и STRTOD () способны преобразовывать строку NAN в NAN FLOAT / двойное значение.
Если вы хотите заменить значения с 0.0 в ваш набор данных, вы можете сделать это, используя функцию isnan ().
if (isnan(val))
{
val = 0.0;
}
Другие советы
Хотите, чтобы результат был поплавок (или двойной) NAN - затем используйте функцию Stdlib Strtod ().
Если вы хотите иметь дело с ним по-своему (установите его на 0 и т. Д.) Затем сначала прочитайте каждую строку в строку, проверьте на нан с strcmp (), затем проанализируйте строку в зависимости от того, что вы найдете - проще, если нан может появиться только в одном столбце.