LECTURE DE FICHIER DE C++

Fermé
sabdoul Messages postés 40 Date d'inscription samedi 18 août 2012 Statut Membre Dernière intervention 22 octobre 2014 - 18 août 2012 à 14:09
cap'tain sheeps Messages postés 447 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 1 octobre 2014 - 27 août 2012 à 13:55
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 mardi 9 février 2010 Statut Membre Dernière intervention 30 juin 2015 102
19 août 2012 à 17:37
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 samedi 18 août 2012 Statut Membre Dernière intervention 22 octobre 2014
21 août 2012 à 14:06
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 jeudi 19 mai 2011 Statut Membre Dernière intervention 1 octobre 2014 10
Modifié par cap'tain sheeps le 21/08/2012 à 22:08
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 jeudi 19 mai 2011 Statut Membre Dernière intervention 1 octobre 2014 10
Modifié par cap'tain sheeps le 21/08/2012 à 22:12
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 jeudi 19 mai 2011 Statut Membre Dernière intervention 1 octobre 2014 10
Modifié par cap'tain sheeps le 21/08/2012 à 22:16
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 samedi 18 août 2012 Statut Membre Dernière intervention 22 octobre 2014
25 août 2012 à 13:57
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