PDA

View Full Version : [C++] Cancellazione dati da un file binario


mapomapo
21-07-2007, 10:50
salve ragazzi, ho una domandina..
premetto che questo è un dubbio che mi assale da un po' di tempo, sto cercando di trovare una soluzione ma, a quanto pare, sono al solito "punto morto".
Allora:
Ho un file binario con dei dati strutturati al suo interno...per comodità facciamo finta che siano "char [12]; int". Voglio cancellare il terzo dato strutturato presente nel file: che voi sappiate esiste una funzione che lo faccia in automatico?
La mia idea per "eliminare" dati da un file bin è quella di caricare tutto in memoria (sto gestendo un vector), eliminare dal vettore dinamico, aprire un ofstream e sovrascrivere il file in questione...
esiste qualche altro modo per far questo?

Vito

cionci
21-07-2007, 11:57
Non esiste modo di farlo, se non con il metodo che ha detto te o simili.
Anzi devi anche prima eliminare il file originale o comunque troncarne a zero la lunghezza perché altrimenti l'ultimo record rimane doppio (l'ultimo originale non viene sovrascritto).

Soluzione un po' più furba sarebbe quella di andare ad immettere nella struttura un byte di validità e dopo per "eliminare" la struttura basterebbe settare a "non valido" il byte. Ovviamente al momento di caricare le strutture dati, quelle con il byte a "non valido" devono essere ignorate.

Comunque prima o poi il file dovrà essere compattato ;)

mapomapo
21-07-2007, 12:36
bene! quantomeno so che non ho impiegato del tempo prezioso per studiare un metodo già implementato in qualche comodissima funzione!! :D

Vito

PS
un pomeriggio senza aver nemmeno studiato le stringhe (ero alle primissime armi col C) mi inventai la strcmp lavorando sui codici ascii... ^^' non ti dico il misto di soddisfazione et bestemmia (lol) quando scoprii che esisteva già :D