كيفية التعامل مع NAN عند القراءة في ملف CSV في C ++

StackOverflow https://stackoverflow.com/questions/3441486

  •  27-09-2019
  •  | 
  •  

سؤال

أقرأ في ملف 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 فقط في عمود واحد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top