Per adesso ho questo cod. che estrapola molto bene le righe volute a partire dal fondo del file

codice:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

#define LINEE 18

int main()
{
	ifstream f;
	f.open("filedaestrapolare.txt", ios::binary);

	int ri=0;
	f.seekg(-1, ios::end);
	char c;
	f.get(c);
	
	//APRO FILE CON LE ULTIME RIGHE CHE INTERESSANO
	
	 ofstream fout;
	 fout.open("solo-le-ultime-18-righe.txt");

	
	//---------------------------------------------
	
	while(ri<=LINEE)
	{
		if(c=='\n') ri++;
		f.seekg(-2, ios::cur);
		if(f.fail()) 
		{
			f.clear();
			f.seekg(0, ios::beg);
			break;
		}
		f.get(c);
	}

	string line;
	getline(f, line);
	getline(f, line);
	while(!f.fail())
	{
                    
        //scrivo su file ogni linea rilevata
		fout << line;
		fout << "\n";
		//----------------------------------
		cout << line << endl;
		getline(f, line);
		
		//cin.get();
	}

	f.close();

	//return 0;
}
Adesso avrei bisogno però di "invertire" il processo di estrapolazione e prelevare solo le prime 18 righe del file desiderato.

Ho provato con il sostituire

codice:
f.seekg(-1, ios::end);
con

codice:
f.seekg(-1, ios::beg);
e altre prove... con

codice:
while(ri<=LINEE)
ma nulla...

:master:

TNX