قراءة C ++ في قطاعات محددة من البيانات من ملف تم إعادة توجيهه إلى برنامجي

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

  •  25-09-2019
  •  | 
  •  

سؤال

أنا أعمل على برنامج يأخذ ملفًا إعادة توجيهه كمدخل. على سبيل المثال ، إذا تم استدعاء برنامجي foo ، فسأتصل بالبرنامج مع ./foo < input.txt. من المفترض أن يتم تنسيق الملفات التي أقوم بتشغيلها عبر برنامجي مع عدد صحيح واحد على السطر الأول ، واثنين من الأعداد الصحيحة في السطر الثاني. لذلك شيء مثل

3
1 8

أجد أن بعض الملفات لها أحرف غريبة على الرغم من أني على السطر الأول الذي أحتاج إلى تجاهله. شيء مثل

3 t
1 8

كنت أقرأ في البيانات بمجرد القيام به cin >> var >> var 2 >> var3; ولكن عندما يتم إلقاء هذا الإضافي في المزيج ، فإنه يربط كل شيء. ما هي أفضل طريقة للعمل حول هذه المشكلة؟ هل هناك ما بعد أن أخبِّل المتغير الأول المتغير بتخطي بقية الخط؟ أم سأستخدم getline الوظيفة ثم تحليل ذلك بطريقة أو بأخرى؟ شكرًا.

هل كانت مفيدة؟

المحلول

إذا كان الملف من النموذج

[number] garbage
[number] [number] garbage

وأنت تعلم أن الأرقام موجودة دائمًا في الموضع الصحيح على السطر ، ثم سأستخدمها std::getline() لقراءة كل سطر ثم حاول قراءة العدد المتوقع من الأعداد الصحيحة من كل سطر تقرأه.

نصائح أخرى

نعم ، الطريقة الواضحة ستكون للاستخدام std::getline لقراءة سطر النص ، استخدم std::string تحصل من ذلك لتهيئة std::istringstream, ، اقرأ العدد الصحيح للعناصر من هذا الخط ، وكرر حسب الحاجة.

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