Format dans les fstream

Signaler
Messages postés
10
Date d'inscription
dimanche 12 mai 2002
Statut
Membre
Dernière intervention
13 août 2003
-
Messages postés
260
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
27 août 2008
-
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

Messages postés
260
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
27 août 2008
1
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
Messages postés
10
Date d'inscription
dimanche 12 mai 2002
Statut
Membre
Dernière intervention
13 août 2003

-------------------------------
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
Messages postés
260
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
27 août 2008
1
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