سؤال
كنت أستخدم النموذج المستخدم في أحد الأسئلة ذات الصلة. المشكلة الوحيدة هي أنني أستمر في الصواب في نهاية الملف.
الملف هو 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);
لا تنتمي إلى StackOverflow