bonjour à vous, je m'heurte à un problème de sérialisation (conversion d'une structure de donnée en format binaire)
si j'écris :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
ofstream MyStream("test.bin",ios::binary);
SizeX=242;
MyStream.write(reinterpret_cast<const char*>(&SizeX), sizeof(unsigned int));
SizeY=138;
MyStream.write(reinterpret_cast<const char*>(&SizeY), sizeof(unsigned int));
for(row=0; row<SizeX;row++)
{
for(col=0; col<SizeY;col++)
{
dValue = GetValue(row,col);
MyStream.write(reinterpret_cast<const char*>(&dValue), sizeof(double));
}
} |
alors j'obtiens bien un super fichier illisible que j'arrive à relire pour retrouver ma structure d'origine. (qui contient des truc comme ça : 5‡9{Fò¿ì†jx꯿#iÅõ÷*¿e[Øcº*¿~bÊ«fâ}¿Á?’B³Œž?ìŽ........)
par contre mon problème viens que je ne veux pas faire ça avec un fichier mais avec un flux genre stringstream.
donc je change la première ligne par
stringstream MyStream(ios::out|ios::binary);
sauf que à l'exécution il me coupe mon stringstream dès le début. comme si il mettait un caractère fin de chaine.
si je ne stoque dedans que mes double alors tous est stoqué mais dès que je mets mon premier int il me coupe ma chaine et la termine.
par exemple au lieu d'avoir (5‡9{Fò¿ì†jx꯿#iÅõ÷*¿e[Øcº*¿~bÊ«fâ}¿Á?’B³Œž?ìŽ) sur des kiloOctet j'ai (5‡9{Fò)seulement
je ne comprend pas :/
edit: pourtant je viens de tester la taille de mon stringstream et elle augmente bien au fur et a mesure :/
est-ce juste un problème d'affichage ?
Partager