PDA

Visualizza la versione completa : [C++] Estrarre righe da file di testo (txt)


borelg
28-10-2008, 16:45
Ciao a tutti.
Qualcuno di voi conosce una funzione che mi permette di leggere una determinata riga in un file txt? ho sentito parlare di "getline" ma credo che serva solamente per il numero di caratteri o qualcosa del genere, poi anche di fscanf che però non so nemmeno a cosa serva....
Qualcuno di voi può aiutarmi?
grazie in anticipo :D
ps. naturalmente le righe dopo dovrei memorizzarle come stringhe. Per riga intendo 1 frase dopo la quale va a capo.

LeleFT
28-10-2008, 18:28
Classe ifstream, metodo getline().

Un piccolo esempio:


#include <iostream>
#include <fstream>
using namespace std;

int main () {

ifstream mioFile;
int numLinea = 0;
char linea[1024]; // Suppongo che le linee non siano più lunghe di 1024 caratteri

mioFile.open ("test.txt", ifstream::in);

while( mioFile.good() ) {
numLinea++;
mioFile.getline(linea, 1024);
cout << "Linea n. " << numLinea << ": " << linea << endl;
}

mioFile.close();

return 0;
}


Ciao. :ciauz:

borelg
28-10-2008, 18:53
ok ma se io volessi ad esempio prendere solamente la linea n° 34? non c' è una funzione per leggere una determinata riga?
grazie tante in anticipo :zizi:

oregon
28-10-2008, 18:55
No ... devi contarle e fermarti quando la trovi ...

Questo se le righe sono a lunghezza varaibile ... se sono a lunghezza fissa, allora puoi arrivarci direttamente ...

borelg
28-10-2008, 19:03
in che senso? devo scorrere tutte le righe? fino a quella che mi interessa?

oregon
28-10-2008, 19:05
Esatto.

MItaly
28-10-2008, 19:47
Per saltare una riga invece di leggerla usa adeguatamente il metodo ignore().

borelg
28-10-2008, 19:53
quindi andrebbe bene una cosa di questo genere?


#include <iostream>
#include <stdio.h>
int main {
int riga = 6;
char frase[300];
FILE *testo;
testo = fopen("C:percorso\\testo.txt","r");
for (cont=1 ; vmax=6 ; i++) {
testo.getline(frase, 300)}
printf ("La frase è questa:\n %s", frase[300]);
}

oregon
28-10-2008, 20:09
Sapresti commentare quello che hai scritto nella for ?

borelg
28-10-2008, 20:23
si mi sono sbagliato..
era


for (cont=1 ; vmax=6 ; cont++) {
testo.getline(frase, 300)}

ma comunque io sto usando dev c++ e mi da questo errore come mai?


main.cpp: In function `int main()':
main.cpp:13: error: `getline' undeclared (first use this function)
main.cpp:13: error: (Each undeclared identifier is reported only once for each function it appears in.)
main.cpp:15: error: `close' has not been declared
main.cpp:15: error: request for member of non-aggregate type before '(' token
main.cpp:18: error: expected `;' before '}' token

make.exe: *** [main.o] Error 1

Esecuzione terminata

Grazie tante per il tuo interessamento!! :unz:

Loading