LECTURE DE FICHIER DE C++

sabdoul Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -  
cap'tain sheeps Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

1 réponse

seo610 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   102
 
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.
1
sabdoul Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
 
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!
0
cap'tain sheeps Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   10
 
string line;

while(getline(file, line)) // ca te renviera NULL donc fin de la boucle si c'est la fin du fichier
// sachant que le getline saute automatiquement une ligne
{


cout << line << endl; //si tu veux l'écrire par exemple
}
0
cap'tain sheeps Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   10
 
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.
0
cap'tain sheeps Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   10
 
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]]
0
sabdoul Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
 
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!
0