Salut!![]()
J'ai besoin de bufferiser un fichier texte pour le manipuler facilement,cela se fait presque sans problème:
bufferize est chargé de "placer" le contenu du fichier "file" dans le tableau "buffer".
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); }
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.![]()
Partager