begin process at 2012 05 30 09:06:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Serialiser une std::map (sans utiliser Boost)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Serialiser une std::map (sans utiliser Boost)

mercredi 3 juin 2009 à 21:33:50 | Serialiser une std::map (sans utiliser Boost)

tom24

Bonjour,

voila pour un projet, je dois sérialiser en binaire des objets. Mes objets comprennent des string, mais aussi une map<string, string>, et je ne sais pas vraiment comment sérialiser ça...
Sérialiser les vector ca je sais faire, mais ca m'aide pas :/

Pour la sérialisation de tout ce qui n'est pas la map j'ai fait cette fonction :

void Contig::store (fstream &stream) {
  stream.write ((char*)&name, sizeof (string));
  stream.write ((char*)&basecalls, sizeof (string));
  stream.write ((char*)&quality, sizeof (string));
}

Et pour recuperer mes infos sérialiser j'ai fait ceci :

void Contig::retrieve (fstream &stream) {
  stream.read ((char*)&name, sizeof(string));
  stream.read ((char*)&basecalls, sizeof(string));
  stream.read ((char*)&quality, sizeof(string));
}


Pouvez-vous m'aider...Si besoin d'autre précision n'hésitez pas!
Merci!

jeudi 4 juin 2009 à 16:27:41 | Re : Serialiser une std::map (sans utiliser Boost)

tom24

pour ceux que ca interesse j'ai pu sérialiser mes données comme ceci :

void Contig::store (fstream &stream) {
  mDirPos::iterator it;

  stream.write ((char*)&name, sizeof (string));
  stream.write ((char*)&basecalls, sizeof (string));
  stream.write ((char*)&quality, sizeof (string));
  for (it=directionPosition.begin(); it!=directionPosition.end(); it++) {
    stream.write ((char*)&(it->first), sizeof(string));
    stream.write ((char*)&(it->second), sizeof(string));
  }
}

Ca doit pas etre la meilleure/bonne méthode mais pour l'instant j'ai que ca.
Par contre si quelqu'un veut m'aider pour deserialiser, j'serais pas contre^^

Merci!
jeudi 4 juin 2009 à 19:57:46 | Re : Serialiser une std::map (sans utiliser Boost)

vecchio56

Administrateur CodeS-SourceS
A première vue ca m'étonnerait que ca marche vu que sizeof(string) est une constante, et ne dépend pas de la taille de la chaine.

_____________________________________
Un éditeur de ressources gratuit pour Windows

jeudi 4 juin 2009 à 20:11:59 | Re : Serialiser une std::map (sans utiliser Boost)

tom24

arf oui effectivement ca ne peut pas fonctionner. :/
du coup faut-il que j'utilise par exemple : name.capacity() ? ou tout simplement name.size() ?

Je vois pas quoi utiliser d'autre si ce n'est pas ca.

Merci deja pour ta réponse.
jeudi 4 juin 2009 à 20:28:15 | Re : Serialiser une std::map (sans utiliser Boost)

vecchio56

Administrateur CodeS-SourceS
Pour sérialiser une chaine ca me semble pas compliqué : tu écris la taille, puis les données
Pour désérialiser, tu lis la taille (n) et tu lis une chaine de n octets.

_____________________________________
Un éditeur de ressources gratuit pour Windows



Cette discussion est classée dans : string, stream, char, map, sizeof


Répondre à ce message

Sujets en rapport avec ce message

AnsiString et Char [ par JCLK ] J'ai un leger probleme :je recupere une String et j'ai ensuite besoin de la transformer en char *Est-ce possible ?La String contient un path ("C:\...\ PROBLEME POINTEURS [ par zeloveur ] char * saisirChaine(){ int i=0; char *chn; chn=(char *)malloc(sizeof(char)); do { chn[i]=getchar(); chn=(char *)realloc(chn,(++i+1)*sizeof(char)); } tableau de char -> string [ par alfred289 ] bonjour,j'utilise BOrland C++ builder 5 et j'essaie de transformer un tableau de caractères en sring et je trouve pas commentmerci de votre aide operator [] ds une classe string pr retourner un caractère [ par ngryman ] Salut à ts,voilà j'ai un petit souci ds une classe String que j'ai fait. J'ai inclu un opérateur [] qui comme un char* retourne le char à la position Convertir une string en char* [ par dickymoe ] Existe-t-il une fonction qui permet de convertir une string en char* ?ou alors une fonction qui compare deux string sans respecté la casse ???Merci(en convertir un String* en char [ par mimyne ] Bonjour a tous malgrès toute les fonctions que g essayé je n'arrive pas a convertir un string* en char s'il y a qqun qui pourrait me renseigner je su convertir un String* en char [ par mimyne ] Bonjour a tous malgrès toute les fonctions que g essayé je n'arrive pas a convertir un string* en char s'il y a qqun qui pourrait me renseigner je su Convertion d'une string en char [ par redpooka ] Voici avec ce programme ca n'affiche juste le premier charactère comment faire pour qu'il affiche toute la chaine de caracètre ?Merci#include <iostre Probleme converssion [ par zzzzzz ] <img src=/imgs2 Probleme malloc [ par zzzzzz ] <img src=/imgs2


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,231 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales