سؤال

كنت أستخدم النموذج المستخدم في أحد الأسئلة ذات الصلة. المشكلة الوحيدة هي أنني أستمر في الصواب في نهاية الملف.

الملف هو fstream و STR هو سلسلة.

استثناء غير محدد Microsoft C ++ الاستثناء: std :: iOS_Base :: الفشل

while (getline(file, str)) 
{

}

if (cin.bad ()) {// IO error} آخر إذا (! cin.eof ()) {// خطأ التنسيق (غير ممكن مع getline ولكن ممكن مع المشغل >>)} آخر {// خطأ التنسيق (لا ممكن مع getline ولكن ممكن مع المشغل >>) // أو نهاية الملف (لا يمكن إحداث الفرق)}

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

المحلول

إذا كنت تحصل std::ios_base::failure الاستثناءات التي تم إلقاؤها على الأرجح ناتج عنك (أو بعض التعليمات البرمجية التي تستخدمها) تشغيلها لملفك. يجب أن تكون خارج الافتراضي. فقط للاختبار ، يمكنك محاولة إيقاف تشغيلها مباشرة قبل حلقة الوقت ، ولكن ربما تحتاج إلى التحقيق في ما يديرها.

file.exceptions(std::ios_base::goodbit);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top