Sujet : [c++] parcourir un fichier... |
LeGreg |
joce a écrit a écrit :
t'es sur de ca :heink:
Le C++ alloue pas la mémoire dynamiquement dans ce cas non :??:
|
Argh !
ben non char *, on ne te l'alloue
pas dans ton dos, surtout que ton char * la
il est passe en valeur et pas par reference
(donc getline il aurait du mal a modifier sa valeur pour
y placer un pointeur alloue).
La solution c'est soit de definir un char toto[81];
pour pouvoir y caser 80 caracteres (plus le nul terminal)
soit d'utiliser les std::string
(mais c'est plus lourd que le char *).
Par ailleurs le comportement de ton appli
n'est pas bien defini :
le getline ne stocke pas le caractere terminal
dans ta chaine, ce qui fait que la sortie
risque d'etre desordonnee (les passages a la ligne
seront bouffes).
Si tu veux reprogrammer cat
il vaut peut-etre mieux travailler en mode
binaire et utiliser les fonctions
istream::read et ostream::write..
Sinon allouer un tampon de la taille de ton fichier
c'est plutot une mauvaise idee => si ton fichier
fait 1 Go je n'ose pas imaginer.. pour optimiser les appels systemes, il vaut mieux
travailler avec des tampons de taille
assez importante, la taille optimale
depend evidemment des circonstances,
mais des tampons trop gros provoquent
des rallentissements lies a la gestion
de la memoire et des tampons trop petits
sont inefficaces parce que tu multiplies des appels
systeme pour pas grand chose.
A+
LEGREG [edtdd]--Message édité par legreg--[/edtdd] |