Format dans les fstream

cs_Cyrik Messages postés 10 Date d'inscription dimanche 12 mai 2002 Statut Membre Dernière intervention 13 août 2003 - 23 avril 2003 à 11:03
crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 - 24 avril 2003 à 08:08
Bien le bonjour tout le monde,

Ca fait maintenant 2 jours que je cherche sur le net, la façon de formater "habituelle" en C++. Je m'explique, j'ai tjrs vu dans les programmes (les jeux quand je trichais =b) les données enregistrées en hexadécimal et non en chaine. Or il semble qu'en C++ on ne face que du caractère.

Je donne un exemple, je voudrais par exemple sauvegarder les données suivantes : 1 , 24, A , test
Cela donnerait en hexa un truc comme ca environ:
01 00 18 00 74 65 73 74

Comment fait-on cela en C++ ? Est-ce utile ?

Cyril Q.
Programmeur débutant
Cyrik@wanadoo.fr

3 réponses

crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 1
23 avril 2003 à 11:22
La facon dont tu stock tes données est tres importante pour la rapidité d'execution de ton programme. Pour sauvegarder des données, on optera plus pour une sauvegarde au format binaire (c'est ce que tu voi en hexa) qu'au format texte (ASCII). En fait, tu dit que c'est en hexa mais ya pas de différences, c'est du binaire, écrit sous une autre forme.

Donc, utilise
ofstream * ofs = new ofstream(fMap, ios::out | ios::binary);
ofs->write((char*)&MaChaine, sizeof(MaChaine));

comme ca tu écrite ce que tu veut dedans, genre structure et tout ca.
A+,Hart
0
cs_Cyrik Messages postés 10 Date d'inscription dimanche 12 mai 2002 Statut Membre Dernière intervention 13 août 2003
23 avril 2003 à 14:23
-------------------------------
Réponse au message :
-------------------------------
> Donc, utilise
> ofstream * ofs = new ofstream(fMap, ios::out | ios::binary);
> ofs->write((char*), sizeof(MaChaine));
>

Mmhh ...
Je crois que j'ai compris. Il me reste un problème. D'après ce que j'ai compris, il faut que la chaine soit déjà "formatée", c'est à dire que pour écrire l'entier 16, je dois mettre le caractère correspondant au symbol de code "10", il y a des fonctions qui permettent de faire cela simplement en C++ ? Et dans l'autre sens ?

Cyril Q.
Programmeur débutant
Cyrik@wanadoo.fr
0
crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 1
24 avril 2003 à 08:08
Si tu veut mettre l'entier 16 dans ton fichier, pas besoin de convertir, que tu mette 16 en décimal ou 10 en héxa ca revient au meme.
Hart
0
Rejoignez-nous