Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Salvare Oggetti con all'interno vettori dinamici su file.
Forum - C/C++ - Salvare Oggetti con all'interno vettori dinamici su file.

Avatar
.Ch3bO (Normal User)
Rookie


Messaggi: 29
Iscritto: 07/02/2006

Segnala al moderatore
Postato alle 20:41
Martedì, 01/02/2011
Salve, mi spiego meglio.
Ho una classe di questo tipo:

class CElement
{
private:
    unsigned int m_id;
    string m_name;
    string m_user;
    vector<int> m_password;
    string m_url;
    string m_descript;
    vector<string> m_tag;
...}

Il mio obiettivo è quello di salvare un vettore (vector<CElement> mydb;) in un file binario, utilizzando fwrite e fread.
Il problema non è capire quanti elementi del vettore mydb ho, ma quando vado a salvare/caricare i membri vector<int> m_password e vector<string> m_tag variano di dimensioni, quindi non ho una dimensione fissa dei miei oggetti CElement ma variabile.... come faccio a sapere a priori quanto spazio occuperanno? Non sono in grado di fare una sizeof sulla quantità di dati che leggo... Soprattuto in fase di load.. come faccio a sapere la dimensione di questi due vettori che avranno sempre dimensione diversa?

Spero di essermi spiegato!
In caso ovviamente avete altre idee, e classi da utilizzare per lo stesso scopo sono ben accette!:D Grazie.

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 1:27
Mercoledì, 02/02/2011

è per questo che hanno inventato xml :)

ad ogni modo puoi fare una funzione leggermente più smart per la serializzazione/deserializzazione, mi spiego meglio:

per serializzare un array di qualsiasi dimensione è utile adottare lo stesso principio delle BSTR, ovvero quello di avere in testa un intero che specifica da quanti valori è seguito.

DIMENSIONE|ELEM1|ELEM2|ELEM-n...

in questo modo nella procedura di deserializzazione leggi l'int iniziale e sai di quanti elementi è costituito l'array.

questo principio si applica a tutto ciò che è "variabile" :)

PM Quote