Aggiungo:
ho fatto un piccolo passo avanti, sono riuscito a leggere tutto il file .txt, dopodiche' ho provato a selezionare solo le parti che mi interessano.
Quindi quando incontro la stringa DIMENSION: mi estrae il relativo valore che poi ho anche convertito in intero in quanto mi servira' piu' avanti.
Successivamente (sbagliando) ho creato un ciclo for in modo da poter leggere le righe relative ai vari punti, fino all'ultimo che corrisponde alla dimensione del problema. Dopodiche' incontra la stringa "EOF" e dovrebbe terminare il lavoro.
Il problema adesso e' che non riesco ad uscire dal ciclo! Mi stampa continuamente il valore "EOF" : dove sbaglio?

ecco il codice
codice:
#include <iostream>
#include <fstream>
#include <sstream>  // per convertire string in int
#include <string>
#include <climits>
#include <cstdlib>
using namespace std;

void ReadData (string FileIn) {
    cout << "Nome File: " ;          // per immettere il nome
    cin >> FileIn;                   // del file da aprire
    cout << endl;                   // direttamente da tastiera


    ifstream in(FileIn.c_str());
    if (!in) {
        cerr << "impossibile aprire il file " << FileIn << endl;
        exit(1);
    }
    string token;
    cout << "***   INIZIO LETTURA   ***\n" << endl;
    while (in >> token) {
        int dim;
        if(token == "DIMENSION:") {
            getline(in, token);
            cout << "dimensione del problema: " << token << endl;
            istringstream sin;       // codice per
            sin.str(token);          // convertire la
            sin >> dim;              // stringa in int
            cout << "dimensione convertita in numero: " << dim << endl;
        }

        for(int i=0; i<dim; i++)    {
                getline(in, token);
                cout << token << endl;
                continue;
        }

        if(token == "EOF" ) {
           break;
        }
    }
    cout << "\n***   FINE LETTURA   ***" << endl;
    in.close(); // chiude il file, e' necessaria??
    cout << "****   CLOSE   ****";
}

int main() {
    string FileIn;
    ReadData (FileIn);
    return 0;
}
inoltre vorrei capire bene il significato della funzione getline() : mi aspettavo che restituisse anche la prima stringa che legge ma invece non lo fa.
Esempio: se legge la stringa reltiva al nodo 1 fatta cosi'
1 4 5
mi restituisce solo le coordinate, cioe'
4 5

perche'?