LECTURE DE FICHIER DE C++
sabdoul
Messages postés
47
Statut
Membre
-
cap'tain sheeps Messages postés 491 Statut Membre -
cap'tain sheeps Messages postés 491 Statut Membre -
je voudrais comment lire une ligne aleatoirement dans un fichier avec C++.
avec la methode getline ca ne marche pas car j'ai utilise srand(time(0)) pour lire un nombre aleatoirement et ensuite je me deplace avec ios::cur. et ensuite jesaie de saisir toute la ligne avec getline mais ca marche pas.
aider moi svp
avec la methode getline ca ne marche pas car j'ai utilise srand(time(0)) pour lire un nombre aleatoirement et ensuite je me deplace avec ios::cur. et ensuite jesaie de saisir toute la ligne avec getline mais ca marche pas.
aider moi svp
1 réponse
-
Commence par compter le nombre de lignes dans ton fichier, ensuite met des bornes à ta fonction pour prendre un nombre aléatoire pour prendre un nombre qui est entre 0 et le nombre de lignes.
Ensuite, tu peux faire le déplacement à la ligne ainsi obtenue et la récupérer avec ta fonction favorite pour ce genre d'opération.
-
merci de m'aider cependant quel fonction pour lire le nombre de ligne car la fonction que je connait permet de lire que le nombre de caractère du moins c'est une astuce . on se met a la fin du fichier avec fichier.seekg (0,ios::end) ; et on récupère la taille avec fichier.tellg qui correspondra au nombre de caractère de la position d'où le curseur se trouve dans le fichier, étant donne qu'on se trouve a la fin on effectivement la taille du fichier.
maintenant comment se déplacer entre les lignes car le déplacement dans les fichiers que je connait se fait a travers les caractères avec la fonction seekg (nombre de caractère,ios::cur)
s'il vous plait aider moi! -
-
Sinon pour récupérer le nombre de ligne tu peux utiliser la fonction file.eof()
Il me semble qu'elle marche comme ça:
for ( int nbLigne = 0; ! file.eof; nbLigne++)
{
getline(file, line); //pour avancer ton curseur d'une ligne mais concrêtement c'est du bidouillage
}
Mais je suis pas sûr j'ai pas de quoi testé et mes souvenirs sont flous. -
Si malgré ça tu n'arrives pas à faire marcher le getline() va voir ce tuto (très bien fait) pour tout ce qui est lecture dans un fichier:
https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c#ss_part_2]] -
merci a vous tous de m'avoir aider j'ai pu trouve la solution avec la boucle while(getline(fichier, ligne)) en recuperant chaque ligne pour la mettre dans un tableau dynamique et ensuite recuperer les lignes avec les adresse du tableau.
while(getline(fichier, ligne)) //Tant qu'on n'est pas a la fin, on lit
{
tab.push_back(ligne);//On met cette ligne dans la nouvelle ligne du tableau (tab)cree
}
une fois encore merci!
-