PDA

Visualizza la versione completa : [C++] Scritture in tempi diversi sullo stesso file


Prog13
08-01-2013, 19:29
Salve a tutti! Ho creato una funzione che memorizza su file le informazioni di una data classe, solo che chiamandola più volte (su oggetti diversi) mi va sempre a sovrascrivere il file...
Come posso fare ad impedire ciò?

Questa è la funzione:

void FileMultimediale::memorizza_dati(const char* file) const{
ofstream OutFile(file, ios::ate);
OutFile << URL << " " << Kbyte << " " << Formato << endl;
OutFile.close();
}

ios::ate dovrebbe porre il puntatore in scrittura alla fine del file, no?

Ho anche provato ad aggiungere:
OutFile.seekp(ios_base::end)
ma il risultato non cambia...

Come posso fare a scrivere continuamente sul file, senza sovrascrivere ogni volta quanto c'era prima?

oregon
08-01-2013, 19:49
Devi usare

ios::app

e non

ios::ate

Prog13
08-01-2013, 19:52
Grazie mille per la tempestiva risposta! Ora va :D
Un utimo dubbio... Ma a questo punto qual è l'utilità di ios::ate? Solo per la lettura?

oregon
08-01-2013, 19:55
No ... ate posiziona il puntatore alla fine del file una volta sola all'apertura dello stesso, app ad ogni scrittura ... a te comprendere cosa succedeva nel tuo codice.

Prog13
08-01-2013, 20:01
Quindi credo che il problema fosse che il puntatore in scrittura restasse all'inizio!
Comunque grazie mille ancora per il tuo aiuto :)

MdE2005
08-01-2013, 21:00
Originariamente inviato da Prog13
Un utimo dubbio... Ma a questo punto qual è l'utilità di ios::ate? Solo per la lettura?

Giusto per informazione, esiste un sito ben fatto in cui puoi trovare numerose risorse ed esempi riguardanti il C++, esattamente questo (http://www.cplusplus.com)

Ciao :)

Loading