Probleme avec fstream... [c++] - Programmation
Marsh Posté le 03-04-2001 à 14:56:38
t'as essayé de faire par la suite un
f.setmode(filebuf::binary) ?
par la suite?
ptet que ça marche
Marsh Posté le 03-04-2001 à 15:16:15
ben faut bien forcer les choses non ? tu vois une autre maniere ??
janoscoder > MAILMOITONRIBSTP
Marsh Posté le 03-04-2001 à 16:25:30
->toxin
en mode binary, typecaster un pointeur d'entier en pointeur d'octets marche. (et ce même avec des endians différents).
Marsh Posté le 27-08-2007 à 18:27:24
Voilà une solution que j'utilise et qui marche au poil !
int A_Ecrire_dans_le_fichier;
char Sert_seulement_pour_L_adresse;
int main(int argc, char *argv[])
{
A_Ecrire_dans_le_fichier=456;
ofstream fichier;
fichier.open ("test.dat", ios::binary);
fichier.write (&Sert_seulement_pour_L_adresse - sizeof(A_Ecrire_dans_le_fichier), sizeof(A_Ecrire_dans_le_fichier));
fichier.close ();
return 0;
}
C'est tiré par les cheveux mais ça marche !
Marsh Posté le 28-08-2007 à 07:28:15
dégueux
Code :
|
Marsh Posté le 28-08-2007 à 09:01:39
on peut biensur faire directement avec un reinterpret_cast<char*>(&i);
Marsh Posté le 03-04-2001 à 10:42:26
Bonjour a tous,
Mon compilateur (GCC) ecrit par defaut les int sous forme ASCII dans les streams.
ex :
ofstream f("test.dat", ios::binary);
f << (int) 456;
et donc dans le fichier j'ai la chaine "456". Tout a fait normal. Seulement moi j'aimerais bien qu'il les stocke sous forme binaire, 4 octets par int, comme ca ca facilite la relecture.
J'ai donc ecrit la fonction suivante (censee surchargee la fonction existante) :
ostream& operator << (ostream& out, const int & i)
{
out.write((char*) &i, sizeof(int));
return out;
}
Qui est censee fonctionner. Mais bizarrement le compilo s'en fout et utilise la fonction standard, et continue a ecrire en ASCII dans le fichier. Ou est la connerie ?