PDA

Visualizza la versione completa : [C++] Lettura valore da file in posizione specifica


mazzi
29-10-2007, 16:13
:ciauz: Ciao a tutti, innanzi tutto complimenti per il forum, vi espongo il mio problema.
Ho un file .dat contenente una lista di numeri interi incolonnati uno ad uno.
Vorrei leggere il dato posizionato in una riga precisa, avete suggermenti?
ho provato con seekg ma mi restituisce valori sbagliati.
grazie a chi mi aiuterà :bhò:

mondobimbi
29-10-2007, 16:16
prova ad usare
fopen , che ti restituisce un file pointer
fseek , che ti posizione all'offset desiderato

ciao
sergio

mazzi
29-10-2007, 17:04
Ciao, io ad esempio voglio leggere dal terzo dato del file, ho provato così ma non funziona



#include <fstream>
#include <iostream>

using namespace std;

int main(){
ifstream inFile;

inFile.open ("Test.dat");

if (inFile.fail()) {
cerr << "unable to open file Test.dat for reading" << endl;
system("PAUSE");
exit(1);
}

int n;
inFile.seekg(3);
while(inFile >> n)
cout << n << endl;
inFile.close();
system("PAUSE");
return 0;
}

mondobimbi
29-10-2007, 17:27
a me funziona, cosa non funziona a te?
ciao
sergio

mazzi
29-10-2007, 19:33
non capisco perchè se metto inFile.seekg(4) oppure inFile.seekg(5) o anche inFile.seekg(6), l'output è lo stesso. A cosa si riferisce il parametro della seekg?

mondobimbi
30-10-2007, 07:47
il parametro di seek è l'offset del file, cioè la distanza in byte tra la posizione attuale del puntatore e la nuova posizione che si desidea sul file. Questo vuol dire che quando il puntatore è posizionato all'inizio del file (come quando apri un file) con seekg(5) ti posizioni alla quinta posizione del file.
Se supponi che il tuo file da leggere contenga la stringa 123456789 in output avrai la stringa 56789.
ciao
sergio

mazzi
31-10-2007, 13:51
ok grazie per l'aiuto :), per caso sai come riportare il puntatore all'inizio del file?

mondobimbi
31-10-2007, 16:13
inFile.seekg(0, ios::beg);

Loading