Вопрос о функции seekg () ifstream в C ++? - PullRequest
1 голос
/ 13 мая 2011

Я тестирую следующий код:

int _tmain(int argc, _TCHAR* argv[])
{
    int sum = 0;
    int x;
    ifstream inFile;

    inFile.open("test.txt");
    if (!inFile) {
        cout << "Unable to open file";
        exit(1); // terminate with error
    }

    while (inFile >> x) {
        cout << x << endl;
    }
    cout << "-----------------------------" << endl;
    // Reading from beggining file again
    inFile.seekg(0, ios::beg);
    while (inFile >> x) {
        cout << x << endl;
    }

    inFile.close();

    return 0;
}

В приведенном выше коде я хочу прочитать файл, затем переместить указатель на начало файла и прочитать снова. Я использовал inFile.seekg(0, ios::beg);, чтобы вернуться к началу файла, но он не работает? Кто-нибудь может мне помочь? Спасибо

Ответы [ 3 ]

14 голосов
/ 13 мая 2011

Прежде чем вы начнете искать, вам необходимо очистить все флаги ошибок, иначе в потоке не будет выполнено никаких операций:

inFile.clear();
inFile.seekg(0,std::ios::beg);

Это потому, что будет установлен бит eof, потому что вы достигликонец файла перед.

5 голосов
/ 13 мая 2011

Я думаю, что вы должны сбросить флаги ошибок ifstream с помощью inFile.clear ().В противном случае он все еще думает, что достиг конца файла.

0 голосов
/ 19 апреля 2013
int autoinc()   //auto incriment no//
{
    fstream fp;

    fp.open("birthreg.dat",ios::in);

    fp.seekg(0,ios::beg) ; **//what used this function**

        int t=0;

    while(fp.read((char*)&st,sizeof(birthreg)))

    t=reg_no;

    fp.close();

    return t;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...