كيفية التعامل مع NAN عند القراءة في ملف CSV في C ++
سؤال
أقرأ في ملف CSV لبيانات السلسلة الزمنية في برنامج C ++. ومع ذلك ، تحتوي بياناتي على بعض النان. علي سبيل المثال:
1-Jul-2010, 1.0
2-Jul-2010, 2.0
3-Jul-2010, NaN
4-Jul-2010, 3.0
للتعامل مع هذا ، كتبت نصًا قصيرًا في MATLAB يحل محل جميع NAN بـ 0.0 - ثم قرأت في الملف الجديد بدون NAN. هل هناك طريقة سهلة أو تجنب هذه المعالجة المسبقة؟
شكرًا!
المحلول
كما ذكر David سابقًا ، ليس عليك أن تعالج الملف مسبقًا على الإطلاق. strtof () و strtod () كلاهما قادران على تحويل سلسلة NAN إلى قيمة تعويم/مزدوجة nan.
إذا كنت ترغب في استبدال القيم بـ 0.0 في مجموعة البيانات الخاصة بك ، فيمكنك القيام بذلك باستخدام وظيفة ISNAN ().
if (isnan(val))
{
val = 0.0;
}
نصائح أخرى
هل تريد أن تكون النتيجة نان تعويم (أو مزدوج) - ثم استخدم وظيفة stdlib strtod ().
إذا كنت ترغب في التعامل معها بطريقتك الخاصة (اضبطها على 0 وما إلى ذلك) ، فاقرأ كل سطر في سلسلة أولاً ، تحقق من NAN مع STRCMP () ثم تحليل السلسلة اعتمادًا على ما تجده - أسهل إذا كان يمكن أن تظهر NAN فقط في عمود واحد.