موسسه خیریه محک

شهر ریاضی بازی-ریاضی

خوندن از فایل تا EOF

+1 امتیاز
1,376 نمایش

کد زیر از یک شیء از نوع ifstream استفاده میکنه که توسط اون از یک فایل متنی یک سری عدد بخونه. (فایل طوریه که هر عدد تو یک خطه.) و خب اونهارو میخونه تا به EOF میرسه:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream iFile("input.txt");    // input.txt has integers, one per line

    while (!iFile.eof())
    {
        int x;
        iFile >> x;
        cerr << x << endl;
    }

    return 0;
}

input.txt:

10
20
30

output:
10
20
30
30

سوالم اینه که چرا خط آخر رو دوبار میخونه؟
چجوری میتونم درستش کنم؟

برنامه‌ای که تست نشده کار نخواهد کرد (Stroustrup, Bjarne)
پرسیده شده جمعه ۱۷ آذر ۱۳۹۱ در C++ توسط CPP_Crawler3  
بازتگ شده یکشنبه ۲۵ فروردین ۱۳۹۲ توسط admin

1 پاسخ

0 امتیاز

اگه یک تغییر کوچیک رو کدتون داشته باشید، این مشکل حل میشه. میتونین اینطور بنویسین:

while (!iFile.eof())
{  
    int x;
    iFile >> x;
    if (!iFile) break;
    cerr << x << endl;
}
پاسخ داده شده چهارشنبه ۲ اسفند ۱۳۹۱ توسط CPP_Crawler4