função seekg () falha
Eu estou tentando escrever algum código simples que irá ler um arquivo de texto, mas lê a primeira linha duas vezes. Eu pensei que isso seria tão simples como algo assim
std::ifstream file;
file.open("filename", std::ios_base::in);
std::string line;
std::getline(file, line);
// process line
file.seekg(0, ios::beg);
while (std::getline(file, line))
{
// process line
}
No entanto, o seekg deve falhar, pois a primeira linha não é processada duas vezes. Alguma ideia do porquê?
ATENÇÃO: Este não é o problema que eu estou enfrentando, mas uma versão simplificada do mesmo, para não ter que colar várias classes de código e múltiplas funções. O problema real envolve um ponteiro de arquivo sendo passado para várias funções em várias classes. A primeira função pode ou não ser chamada e lê a primeira linha do arquivo. A segunda função lê todo o arquivo, mas deve primeiro chamar seekg para garantir que estamos no início do arquivo.
Acabei de usar o código acima para simplificar a discussão.