Stocker ce qu'on veut

testtestiop Messages postés 16 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 14 mars 2008 - 12 août 2007 à 14:14
testtestiop Messages postés 16 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 14 mars 2008 - 13 août 2007 à 20:14
Bonjour,

Je voudrais pourvoir stocker (en vue d'affichage ou d'ecriture dans un fichier) dans un string n'importe quel type d'information, donc n'importe quel type de format en fait.

Supposons que je ne sais pas de quel type est la variable que je veux stocker dans mon string.
Un sprintf(ma_string, "%s", variable_dont_je_ne_connais_pas_le_type); fonctionnera si variable_dont_je_ne_connais_pas_le_type est un char * mais si c'est un int, ca va poser probleme, et inversement. Je voudrais pouvoir stocker des int, des floats, des structures, tout et n'importe quoi en fait, mais je ne vois pas comment le faire de maniere simple.

Si quelqu'un a une idee... merci d'avance.

4 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
13 août 2007 à 15:25
Salut,

Bah on peut faire une copie binaire dans un fichier. Genre on écrit sizeof octets dans un flux. Désavantage : on peut pas lire le contenu avec les yeux.

Ce que tu veux faire ça s'appel sérialisation (serialization en british) en général. Voit peut être ce que ça donne sous Google. Mais en général, c'est pas simple, car le PC ne peut pas deviner la forme d'une structure complexe (Une structure contenant une structure et ainsi de suite).
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
13 août 2007 à 16:35
Ah vi je me souviens l'autre défaut de la sérialisation binaire : Les compilos peuvent aligner les membres des structures pour rendre leurs accès plus rapides à l'execution. Donc si on sérialise, on change la taille d'alignement, on recompile, on désérialise, y a gros problème.

Par contre, c'est généralement la sérialisation la plus rapide. Sinon y dit y avoir des tentatives en xml (c'est tellement fashion le xml). Tu peux chercher une lib, par exemple celle là.

Une FAQ sur la sérialisation.

Faut pas chercher de solution miracle. Normalement, y en a pas en C/C++.
0
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
13 août 2007 à 16:38
le plus simple créer une gestion âtr structure /union  ou tu traite automatiquement la sortie.
0
testtestiop Messages postés 16 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 14 mars 2008
13 août 2007 à 20:14
Merci rt15 je vais chercher de ce coté.

Merci omnia, je ne peux pas faire une gestion par structure, j'aurai tant de structures a gerer, mon but la est de pouvoir gagner du temps et, a part si quelqu'un connait un code permettant de parser des headers pour les trnsformer en code permttant de reconnaitre la "structure" des structures et d'afficher le contenu (un compilateur le fait peut etre mais je ne sais pas faire), je ne me vois aps gerer ca.

rt15,Je crois avoir compris ce que tu as marqué sur le defaut de la serialisation binaire, je y penser en codant ca.
0
Rejoignez-nous