Salut!

J'ai besoin de bufferiser un fichier texte pour le manipuler facilement,cela se fait presque sans problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
long getfilesize( fstream & Fichier ){
                                                    long pos = Fichier.tellg();
                                                    Fichier.seekg( 0 , std::ios_base::end );
                                                    long size = Fichier.tellg() ;
                                                    Fichier.seekg( pos,  std::ios_base::beg ) ;
                                                    return size ;
                                                    }
 
              void bufferize(){                                                               
                                     sizeofbuffer=getfilesize(file);                              
                                     buffer=new char[sizeofbuffer];  
                                     file.read(buffer,sizeofbuffer);
 
                                     }
bufferize est chargé de "placer" le contenu du fichier "file" dans le tableau "buffer".
Or la taille de "buffer" est basée sur celle du fichier.
Pour récupérer cette dernière j'ai utilisé un fonction donnée dans la FAQ C++: http://c.developpez.com/faq/cpp/?pag...HIERS_filesize .

Le problème c'est que la taille n'est pas égale au nombre de caractère.
En fait chaque retour à la ligne dans le fichier compte pour 2 caractères!

Donc "sizeofbuffer" est erronné et l'affichage ultérieur de "buffer" affiche d'autre données absentes du fichier "file".

Est-ce normal que le retour à la ligne compte pour 2?
Comment remédier à ce problème sans utiliser l'artillerie(parcourir le fichier,compter les retour à la ligne puis décrémenter d'autant sizeofbuffer)?

Merci de votre aide.