Lecture et Stockage du contenu d'un fichier
Bonjour a vous,
Ca fait un moment que j'ai pas fait de C++ et j'ai du mal a me retrouver sur des choses "simples".
En fait je vous explique la fonctionnalité:
Je dois lire un fichier texte et ensuite travailler sur ce contenu.
La méthode que j'ai pour l'instant choisi est de lire le fichier ligne a ligne.
Cependant, pour stocker ces lignes, je ne sais pas si il vaut mieux utiliser des vecteurs ou alors un tableau de String.
D'ailleurs pour etre honnête, je ne comprends pas grand chose à la doc des vecteurs et je n'arrive pas a les utiliser correctement. Le tableau de string pourrait faire l'affaire mais ca me semble moins propre vu que le fichier peut contenir pas mal de lignes.
Donc je vous demande deux choses.
Tout d'abord, tableau de string ou alors vecteur?
Et dans ces cas, comment implémenter le stockage pour que je puisse parcourir leur contenu?
En terme plus technique, si par exemple j'utilise des vecteurs, quel est le code pour parcourir mon vecteur élément par élément (chaque élément étant une ligne de mon fichier) et pour chaque ligne, parcourir les différents caractères pour que je puisse en extraire les informations dont j'ai besoin ?
Grossièrement , j'aimerais un truc de ce genre:
Code:
1 2 3 4 5 6 7 8 9 10
| Tant que mon fichier n'est pas fini{
Je lis la ligne et la stocke dans une liste (tableau ou vecteur).
}
...
//Ensuite dans un deuxième temps:
Tant que ma liste n'est pas finie{
Tant que je ne suis pas à la fin de mon élément{
Si cet_element contient le caractère "=" alors je récupère ce qui suite le égal et je continue le parcours de ma ligne.
}
} |
Merci d'avance !
AMHA une structure dynamique est la plus appropriée
Selon moi, une structure dynamique (donc, typiquement, les vector de la STL, mais tu peux envisager les queue ou autres, selon la nécessité) sera beaucoup plus appropriée qu'un tableau "à la C"... Surtout si tu as un fichier de plusieurs millier de lignes, et à plus forte raison si tu ignore le nombre de lignes qu'il contient.
En effet, si tu décide d'utiliser un tableau simple, tu te trouve face à deux solutions qui ne sont, pour être tout à fait honnete, pas vraiment à mon gout:
Soit, tu décide de déclarer un tableau d'une taille suffisante par rapport à l'ensemble des lignes que tu t'apprete à lire (mais, dans ce cas là, quelle taille va-tu lui donner? 1000??? 10.000??? 150.000???.. et si la taille ne suffit pas???, et si, au contraire, elle est 100 fois trop importante???)
Soit tu gere la taille de ton tableau de manière dynamique: en réallouant un espace plus grand chaque fois qu'il atteind sa limite...
Mais, dans ce cas là, chaque réallocation va prendre de plus en plus de temps (ne serait-ce qu'à cause de la recopie systématique des lignes déjà lues), et il deviendra de plus en plus difficile de trouver une plage d'adresses mémoire contigues suffisemment grande pour contenir le tableau à sa nouvelle taille, tout en n'ayant pas encore libéré l'espace de l'ancien (vu qu'il faudra recopier les lignes)
Et le problème se posera que tu d'augmenter la taille de ton tableau par 1, 5 ou 100 éléments...
Sauf erreur de ma part, tous les conteneurs de la STL sont créés sur base d'une file ou d'une pile, ce qui palie grandement à ces deux désagréments (vu que, l'allocation ne se fait, hormis si tu le demande expressément autrement, que de la taille d'un élément à la fois)
Et comme la STL est franchement robuste et stable, il me semble presque plus intéressant (hormis dan un cadre purement didactique) de l'utiliser dans un tel cas.
Maintenant, je n'ai fait que donner mon avis personnel sur le sujet, mais je le partage ;)