Я согласен с ответом выше, но столкнулся с тем же вопросом сегодня вечером. Поэтому я подумал, что выложу некоторый код, который будет немного более обучающим и показывает позицию потока на каждом шаге процесса. Я, наверное, должен был проверить здесь ... ДО ... Я потратил час, чтобы выяснить это самостоятельно.
ifstream ifs("alpha.dat"); //open a file
if(!ifs) throw runtime_error("unable to open table file");
while(getline(ifs, line)){
//......///
}
//reset the stream for another pass
int pos = ifs.tellg();
cout<<"pos is: "<<pos<<endl; //pos is: -1 tellg() failed because the stream failed
ifs.clear();
pos = ifs.tellg();
cout<<"pos is: "<<pos<<endl; //pos is: 7742'ish (aka the end of the file)
ifs.seekg(0);
pos = ifs.tellg();
cout<<"pos is: "<<pos<<endl; //pos is: 0 and ready for action
//stream is ready for another pass
while(getline(ifs, line) { //...// }