Aller a une ligne precise d'un fichier txt et la lire

Résolu/Fermé
roxas_3ms Messages postés 7 Date d'inscription dimanche 27 avril 2014 Statut Membre Dernière intervention 11 août 2014 - 9 août 2014 à 17:59
roxas_3ms Messages postés 7 Date d'inscription dimanche 27 avril 2014 Statut Membre Dernière intervention 11 août 2014 - 11 août 2014 à 21:23
Bonjour,
j'ai un fichier texte avec qui fait un mot par ligne et je voudrais lire une seule ligne aléatoirement, par exemple lire le mot de la 36ème ligne et l'afficher, sans lire ou afficher les lignes précédente. j'avais pensé faire comme ceci:

int main()
{
string dico;
int ligne;
ligne = (rand() % 323577) +1;

ifstream fichier("C:/CodeBlocks/dico.txt");
if (fichier)
{
getline(fichier, ligne)
cout << ligne << endl;
}
else { cout << "ERROR: cannot open this file" << endl;}
return 0;
}

mais ça ne fonctionne pas donc je vous demande un petit coup de main ;)
merci d'avance ++
A voir également:

2 réponses

Salut, getline(fichier, ligne); renvoila chaine de caractere de la ligne dans "ligne" donc il ne peut pas etre un entier.
Ensuite rand a besoin d'être initialisé.
Le code suivant fonctionne mais n'est probablement pas la meilleure implémentation:
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#include <time.h>

using namespace std;

int main()
{
string dico;
string ligne;
int numero_de_ligne;
srand (time(NULL)); //Initialiser le seed de rand
numero_de_ligne = rand() % 30 +1; // pour un fichier de 30 lignes
ifstream fichier("C:/dico.txt");
if (fichier)
{
int i=1;
while ( getline (fichier,ligne)&& i<=numero_de_ligne)
{
if(i==numero_de_ligne) cout << ligne << '\n';
i++;
}
fichier.close();

}
else { cout << "ERROR: cannot open this file" << endl;}
return 0;
}
0
roxas_3ms Messages postés 7 Date d'inscription dimanche 27 avril 2014 Statut Membre Dernière intervention 11 août 2014
11 août 2014 à 21:23
ok, merci du coup de main, et tant que ça fonctionne, ça me va quand j'aurais un peu plus de bagage je le retravaillerai si nécessaire :p

encore merci, cordialement.
0