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
ma nulla...
:master:
TNX