在C ++中读取csv文件时如何处理NaN

时间:2010-08-09 15:17:36

标签: c++ file-io csv nan

我正在将时间序列数据的csv文件读入C ++程序。然而,我的数据包含 一些NaN的。例如:

1-Jul-2010,   1.0 
2-Jul-2010,   2.0
3-Jul-2010,   NaN
4-Jul-2010,   3.0

为了解决这个问题,我在Matlab中编写了一个简短的脚本,将所有NaN替换为0.0 - 然后我在没有NaN的新文件中读到。有一个简单的方法或避免 这个预处理?

谢谢!

2 个答案:

答案 0 :(得分:7)

正如David Given已经提到的,你根本不需要预处理文件。 strtof()和strtod()都能够将NaN字符串转换为NaN float / double值。

如果要在数据集中将值替换为0.0,可以使用isnan()函数执行此操作。

if (isnan(val))
{
    val = 0.0;
}

答案 1 :(得分:0)

您希望结果是浮点数(或双精度数)NaN - 然后使用stdlib strtod()函数。

如果你想以你自己的方式处理它(把它设置为0等)然后先将每一行读成一个字符串,用strcmp()检查NaN然后根据你发现的东西解析字符串 - 如果NaN更容易只能出现在一列中。