View Full Version : [c++]input numeri da file .txt
Io vorrei importare in input dei numeri tratti da un file .txt . Mettiamo che io abbia un .txt con due righe soltanto. nella prima riga si trova il numero 10, nella seconda il numero 20. Il mio problema è la procedura di input. con tutte le funzioni che conosco si può inserire una riga (per esempio ho visto le get, getline, ma anche la comune cin dopo aver aperto il file con ofstream).
esiste una funzione che permette di fare l'input di una ruga a scelta del file .txt? se per esempio volessi fare l'input prima della seconda riga e poi della prima, come potrei fare? esiste un'istruzione già esistente per poter leggere la riga 209 di un .txt?
Che io sappia non esiste, devi crearti tu una routine apposita che estragga la riga che ti serve (per quanto riguarda il sequenziale) ... puoi invece accedere ad uno specifico byte nella modalità binaria.
Ziosilvio
24-03-2006, 09:16
esiste una funzione che permette di fare l'input di una ruga a scelta del file .txt?
Credo di no.
Puoi, però, scorrere il file contando il numero di andate a capo, in modo da sapere sempre in che riga sei; e quando arrivi alla riga che vuoi, leggere il suo contenuto.
Leggi bene il capitolo del tuo manuale di C++ relativo alle operazioni sui file.
ok, allora mi lancio nella creazione di una mia nuova routine, che secondo me è molto utile. Se funziona, magari la posto pure qui sul forum, così posso dare una mano a tutti
non potrebbe andar bene fscanf usata N volte, se N è il numero della riga che voglio?
ma anche se la rifaccio n volte, non so se cambia riga.potrebbe leggere sempre la stessa
se sei sicuro che ogni riga contine un solo numero, puoi fare n fscanf("%d"... oppure usare il tokenizer
Se invece non sai quanti numeri ci sono per riga l'unico modo è contare gli a-capo
Ziosilvio
27-03-2006, 09:21
anche se la rifaccio n volte, non so se cambia riga
Il comportamento predefinito di fscanf, getline e compagnia, è di spostare un "contatore al primo byte disponibile" in modo che punti al byte successivo a quello dell'ultima lettura.
Quindi: se rifai n volte getline(fin), leggi ogni volta una riga diversa di fin.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.