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
inoltre vorrei capire bene il significato della funzione getline() : mi aspettavo che restituisse anche la prima stringa che legge ma invece non lo fa.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; }
Esempio: se legge la stringa reltiva al nodo 1 fatta cosi'
1 4 5
mi restituisce solo le coordinate, cioe'
4 5
perche'?

Rispondi quotando