Ответ 1
Поскольку вы достигли конца файла, будет установлен флаг eof
. Вам нужно очистить, используя ifile.clear
- и попробуйте найти:
ifile.clear();
ifile.seekg(0, ios::beg);
Итак, я прочитал все строки из файла
while (getline(ifile,line))
{
// logic
}
Где ifile - это ifstream, а строка - строка
Моя проблема: теперь я хочу снова использовать getline и, похоже, не могу вернуться в начало файла, как работает
cout << getline(ifile,line);
Вернет 0
Я попытался использовать:
ifile.seekg (0, ios::beg);
Безрезультатно, это, кажется, не имеет никакого эффекта. Как вернуться к началу файла?
Поскольку вы достигли конца файла, будет установлен флаг eof
. Вам нужно очистить, используя ifile.clear
- и попробуйте найти:
ifile.clear();
ifile.seekg(0, ios::beg);
Это связано с тем, что в потоке был установлен флаг eof - из-за того, что вы достигли конца файла. поэтому вы должны очистить это как дополнительный шаг.
Eg
ifile.clear();
ifile.seekg (0, ios::beg);
не могу комментировать ответ Konrad, потому что не хватает репутации, поэтому мне придется опубликовать это как ответ, sry:
FYI: В моем случае порядок DID имеет значение, таким образом
в противном случае следующая операция getline (MSVC v120)