Подтвердить что ты не робот

Возврат к началу файла после getline

Итак, я прочитал все строки из файла

while (getline(ifile,line))
    {
        // logic
    }

Где ifile - это ifstream, а строка - строка

Моя проблема: теперь я хочу снова использовать getline и, похоже, не могу вернуться в начало файла, как работает

cout << getline(ifile,line);

Вернет 0

Я попытался использовать:

ifile.seekg (0, ios::beg);

Безрезультатно, это, кажется, не имеет никакого эффекта. Как вернуться к началу файла?

4b9b3361

Ответ 1

Поскольку вы достигли конца файла, будет установлен флаг eof. Вам нужно очистить, используя ifile.clear - и попробуйте найти:

ifile.clear();
ifile.seekg(0, ios::beg);

Ответ 2

Это связано с тем, что в потоке был установлен флаг eof - из-за того, что вы достигли конца файла. поэтому вы должны очистить это как дополнительный шаг.

Eg

ifile.clear();
ifile.seekg (0, ios::beg);

Ответ 3

не могу комментировать ответ Konrad, потому что не хватает репутации, поэтому мне придется опубликовать это как ответ, sry:

FYI: В моем случае порядок DID имеет значение, таким образом

  • ясно,
  • искать

в противном случае следующая операция getline (MSVC v120)