Bonjour!

Je cherche un moyen pour ecrire des donnees brutes dans un stream, qui peut pointer indifferment vers de la memoire ou vers un fichier.

exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
LectureStream(stream *MonStream)
{
  /* je lis mes donnes brutes avec MonStream->read*/
}
 
int main()
{
  fstream MonFichier(...);
 
  stringstream  MaMemoire(...); 
  /* je ne sais pas ce que je dois utiliser pour avoir un*/
  /* stream pointant sur de la memoire car ce n'est pas*/
  /* un string... c'est quand meme ca qu'il faut utiliser??*/
 
  LectureStream((stream *) &MonFichier);
  LectureStream((stream *) &MaMemoire);
 
}
Bon vous l'avez surement remarque, je suis super habitue au C mais pas au C++... et donc les entrees sorties

Autre question, je fais comment pour ecrire/lire des donnes brutes?? parceque quand j'utilise ce code, je n'ai pas du tout les valeurs desirees dans le fichier:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
#include <iostream>
#include <fstream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
  // Ouvre le fichier de données :
  fstream f("fichier.txt", ios_base::in | ios_base::out | ios_base::trunc);
  if (f.is_open())
  {
    // valeurs hexa de '1'->0x31 et '2'->0x32
    short sVal = 0x3132;
 
    f.write(reinterpret_cast < char *> (&sVal), sizeof(short));
 
    sVal++;
 
    f.write(reinterpret_cast < char *> (&sVal), sizeof(short));
 
    // oblige de metre ca sinon 'VALEUR' n'apparait pas dans le fichier
    f.seekg(ios_base::end);
 
    f << "VALEUR = " << sVal << endl;
 
    // Ferme le fichier :
    f.close();
  }
  return 0;
}
resultat dans le fichier:
alors que je veux
Merci d'avance pour vos suggestions!