OVH Cloud OVH Cloud

ofstream et fonction write template

78 réponses
Avatar
Aurélien REGAT-BARREL
Bonjour à tous,
Pour mes besoins j'ai défini une fonction write ainsi :

template<typename T>
void write( std::ofstream & Stream, T Value )
{
Stream.write( reinterpret_cast<char*>( &Value ), sizeof T );
}

void main()
{
std::ofstream OutFileStream;
OutFileStream.open( "test" );
int c = 10;
write( OutFileStream, c );
}

Je m'étonne qu'elle n'existe pas déjà dans la STL, ou même carrement en tant
que fonction membre de ofstream. Je pense plutôt que j'ai mal cherché.
Y'a-t-il un équivalent et si non pourquoi ?
Merci.

--
Aurélien REGAT-BARREL

10 réponses

Avatar
drkm
"M. B." writes:

a écrit dans le message de news:


"M. B." wrote in message
news:<cg2flk$lv3$...

Pour rester du cote textuel, les avantages d'XML sont
innombrables.


Surtout pour des vendeurs de disques, de mémoire et de bande passante.


C'est grotesque ...


Pas tant que ça.

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html



Avatar
drkm
Loïc Joly writes:

wrote:

Si ton format interne est IEEE, tu es garanti avec une précision de 17
(ou peut-être 18 -- il faudrait que je vérifie) qu'une conversion
double->ascii->doube ne perd aucune information (en supposant une
implémentation « correcte » de la bibliothèque, évidemment).


Si tu veux un format texte lisible (c'est à dire que affiche les
double de façon semblable à cette d'un std::cout), alors je ne vois
pas trop comment c'est possible, puisqu'une fraction peut avoir une
représentation non cyclique en base 10 et cyclique en base 2 et
réciproquement. As-tu une référence ?


Encore une fois, si tu découpe en mantisse et exposant, quel est le
problème ? Une sorte de « notation scientifique », en somme.

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html


Avatar
Michel Michaud
Dans news:41249c72$0$8970$, Aurélien
Parce qu'elle accepte un char*, et que autant je sais ce
qu'écrire un char veut dire, autant j'ignore ce que peut
vouloir dire écrire un void.


Ben fwrite le sait bien elle...


fwrite a été inventé pour C, avant que void* n'existe.

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
Gabriel Dos Reis
"Michel Michaud" writes:

| Dans news:41249c72$0$8970$, Aurélien
| >> Parce qu'elle accepte un char*, et que autant je sais ce
| >> qu'écrire un char veut dire, autant j'ignore ce que peut
| >> vouloir dire écrire un void.
| >
| > Ben fwrite le sait bien elle...
|
| fwrite a été inventé pour C, avant que void* n'existe.

Ah bon ?

-- Gaby
Avatar
Michel Michaud
Dans news:, Gabriel
"Michel Michaud" writes:
fwrite a été inventé pour C, avant que void* n'existe.


Ah bon ?


Ah bon quoi ?

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
Fabien LE LEZ
On Mon, 23 Aug 2004 16:49:05 -0400, "Michel Michaud" :

Ah bon quoi ?


Ah bon tout court.


--
;-)

Avatar
Gabriel Dos Reis
"Michel Michaud" writes:

| Dans news:, Gabriel
| > "Michel Michaud" writes:
| >> fwrite a été inventé pour C, avant que void* n'existe.
| >
| > Ah bon ?
|
| Ah bon quoi ?

« Ah bon ? » à ce que j'ai cité dans le message auquel je répondais.

-- Gaby
Avatar
Michel Michaud
Dans news:, Gabriel
"Michel Michaud" writes:
Dans news:,
"Michel Michaud" writes:
fwrite a été inventé pour C, avant que void* n'existe.


Ah bon ?


Ah bon quoi ?


« Ah bon ? » à ce que j'ai cité dans le message auquel je
répondais.


Ah bon ? Et il est encore cité.

En autant que tu es d'accord, la vie est belle. Et j'espère
que tu es d'accord qu'il y avait un fwrite en C avant que
void* n'existe. J'espère aussi que tu ne crois pas que fwrite
a été inventé pour un autre langage. C'est tout ce que je peux
tirer de ce que j'ai écrit.

J'ai l'impression que tu vois plus dans mon message que ce
que j'ai écrit. Relis-le, il est encore en haut.

Je vais prendre un Ah bon, ou tout autre forme similaire,
comme une approbation de mes propos... :-)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/




Avatar
Michel Michaud
Dans news:, Fabien LE
On Mon, 23 Aug 2004 16:49:05 -0400, "Michel Michaud"
:

Ah bon quoi ?


Ah bon tout court.


Non, ah bon tout court, se termine avec un point, pas un
point d'interrogation.

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
Gabriel Dos Reis
"Michel Michaud" writes:

| Dans news:, Gabriel
| > "Michel Michaud" writes:
| >> Dans news:,
| >>> "Michel Michaud" writes:
| >>>> fwrite a été inventé pour C, avant que void* n'existe.
| >>>
| >>> Ah bon ?
| >>
| >> Ah bon quoi ?
| >
| > « Ah bon ? » à ce que j'ai cité dans le message auquel je
| > répondais.
|
| Ah bon ? Et il est encore cité.

Non.

| En autant que tu es d'accord, la vie est belle. Et j'espère

???

| que tu es d'accord qu'il y avait un fwrite en C avant que
| void* n'existe.

???

| J'espère aussi que tu ne crois pas que fwrite
| a été inventé pour un autre langage.

???

| C'est tout ce que je peux
| tirer de ce que j'ai écrit.

Non.

Tu crois que restrict existait avant que printf ne soit inventé pour C
?

| J'ai l'impression que tu vois plus dans mon message que ce
| que j'ai écrit.

Tout ce que je crois, c'est que c'est une explication fallacieuse. Je
ne lis pas plus que ce que tu as écris.

| Relis-le, il est encore en haut.

C'est fait à plusieurs reprises.

| Je vais prendre un Ah bon, ou tout autre forme similaire,
| comme une approbation de mes propos... :-)

Ah bon ? (avec le ton de la ministre des chasseurs).

-- Gaby