Вы можете использовать fin.tellg следующим образом:
fin.seekg(0, fin.end);
length = fin.tellg();
для подсчета общего количества «позиций» в файле. Затем перейдите в нужную стартовую позицию и получите ввод до количества позиций минус 30. Полный пример:
int startPos = 100, length;
string input;
ifstream fin("file.txt");
fin.seekg(0, fin.end);
length = fin.tellg();
fin.seekg(startPos);
for (int i = startPos; i <= length - 30; i++) {
getline(fin, input, '\n')
//do something with 'input'
}
fin.close();