PDA

Visualizza la versione completa : [C++] Passare file di testo come parametro


Skull260287
27-05-2008, 14:41
Ciao a tutti, ho un nuovo problema, vorrei passare come parametro un file di testo dichiarato e aperto nella function X, alla function Y in modo che questa possa scrivere un valore che ricerca utilizzando file<<valore. Questa seconda funzione Y viene richiamata più volte dalla prima ed ogni volta deve andare ad aggiungere il valore trovato in cosa al file, alla fine la funziona x chiuderà il file.

E possibile farlo o bisogna obbligatoriamente utilizzare una struttura di appoggio quale la lista?

GRazie a tutti

oregon
27-05-2008, 14:54
Non ho ben capito la difficolta' ... passa una stringa tramite il puntatore ... che problema c'è ?

Skull260287
27-05-2008, 14:59
Originariamente inviato da oregon
Non ho ben capito la difficolta' ... passa una stringa tramite il puntatore ... che problema c'è ?

Come faccio a modificare per esempio questo codice in modo che la funzione visita possa scrivere sul file outlista?



void visita(PAnodo a, int livello, int i, fstream outlista) {

// Check Livello
if (i == livello) {
outlista<<a->key<<"\t";
return;
}
// Incrementa contatore livello
i++;
// Visita Nodo Sinistro
if (a->left != NULL)
visita(a->left, livello, i,outlista);
// Visita Nodo Destro
if (a->right != NULL)
visita(a->right, livello, i,outlista);
}


void pfileorder(PAnodo Tree){

int num;
cout<<"Salva Albero su FILE:"<<endl;
string NomeLn,NomeOut;
ifstream filista;
ofstream outlista;
NomeOut="albero1.txt";
outlista.open(NomeOut.c_str());
if(!outlista){
cerr<<"Non si puo' aprire il file!"<<endl;
system("pause");
}

for(int k=0;k<Altezza(Tree);k++)
visita(Tree,k,0,outlista);

outlista.close();
}

oregon
27-05-2008, 15:06
Non ho capito la relazione con il primo post ... ci provo ... forse deve essere

void visita(PAnodo a, int livello, int i, ofstream &outlista)

Skull260287
27-05-2008, 15:18
Originariamente inviato da oregon
Non ho capito la relazione con il primo post ... ci provo ... forse deve essere

void visita(PAnodo a, int livello, int i, ofstream &outlista)

Forse mi ero spiegato male, io chiedevo per questo codice. Aggiungendo il riferimento, nella funzione pfileorder mi viene dato questo errore di compilazione:

invalid initialization of reference of type 'std::fstream&' from expression of type 'std::ofstream'
in passing argument 4 of `void visita(Anodo*, int, int, std::fstream&)'

oregon
27-05-2008, 15:25
Continuo a non capire ... perche' non ti spieghi piu' chiaramente?

Hai adottato la modifica che ti ho suggerito?

Adesso il codice che compili qual e'?

In quale riga (il compilatore indica sempre la riga in cui c'e' il problema ... anche tu la devi indicare ...) viene evidenziato l'errore ?

Skull260287
27-05-2008, 15:32
Originariamente inviato da oregon
Continuo a non capire ... perche' non ti spieghi piu' chiaramente?

Hai adottato la modifica che ti ho suggerito?

Adesso il codice che compili qual e'?

In quale riga (il compilatore indica sempre la riga in cui c'e' il problema ... anche tu la devi indicare ...) viene evidenziato l'errore ?

Scusami, mi spiego:

Allora, il codice che compilo è il precedente con la modifica che mi hai suggerito, ovvero:




void visita(PAnodo a, int livello, int i, fstream &outlista)


La riga dove mi viene riportato l'errore è:



visita(Tree,k,0,outlista);


della funzione pfileorder.


Spero di essere stato un pò più chiaro nella spiegazione.

oregon
27-05-2008, 15:40
Leggi meglio quello che ti avevo scritto ...

void visita(PAnodo a, int livello, int i, ofstream &outlista)

specialmente il grassetto ...

Skull260287
27-05-2008, 15:49
Originariamente inviato da oregon
Leggi meglio quello che ti avevo scritto ...

void visita(PAnodo a, int livello, int i, ofstream &outlista)

specialmente il grassetto ...

Ti ringrazio per l'aiuto e soprattutto anche per la pazienza, sono un pò stonato dal caldo, qui a Napoli oggi si sfiorano i 32 gradi, è un incubo già.


Grazie ancora.

oregon
27-05-2008, 15:50
Originariamente inviato da Skull260287
qui a Napoli oggi si sfiorano i 32 gradi

Anche a Roma non si scherza ... :ciauz:

Loading