salut,
je veux savoir comment je peux lire la n-ieme ligne d'un fichier texte en c++
est ce que quelqu'un serait comment faire?
merci d'avance
salut,
je veux savoir comment je peux lire la n-ieme ligne d'un fichier texte en c++
est ce que quelqu'un serait comment faire?
merci d'avance
Bonjour,
Réponse dans la FAQ.
dans la FAQ ya seulement, Comment faire pour lire un fichier ligne par ligne ?
et sais cmt le fair mais ce qu'l me faux c'est de lire une ligne que je choisi moi meme
bonjour,
en mettant un compteur de ligne qui s incremente a chaque heu ... lecture de ligne, ca ferait pas ce que tu veux ?
voila le code que j'ai mais ça lis tous le fichier, si quelq'un peux le modifier pr que je puisse recupuré la n-iém ligne de mon fichier txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #include <string> #include <fstream> #include <iostream> #include <string.h> #include <fstream.h> #include <iostream.h> int main() { // le constructeur de ifstream permet d'ouvrir un fichier en lecture std::ifstream fichier( "strtok esséye.txt" ); if ( fichier ) // ce test échoue si le fichier n'est pas ouvert { std::string ligne; // variable contenant chaque ligne lue // cette boucle s'arrête dès qu'une erreur de lecture survient while ( std::getline( fichier, ligne ) ) { // afficher la ligne à l'écran std::cout << ligne << std::endl; } } }
heu pas moi,
mais t as juste a mettre un int qui s incremente chaque passage de la boucle et tu t arrete quand t as atteint l'incide de la ligne que tu recherche (qui doit lui aussi, l indice, etre de type int a priori).
j'ai esséyé avec ce conde mais ça fonction pas, c bizzard !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int i = 0; while ( std::getline( fichier, ligne )) { if(i == n ) { // afficher la ligne à l'écran std::cout << ligne << std::endl; } }
ça yé j'ai trouvé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 #include <string> #include <fstream> #include <iostream> #include <string.h> #include <fstream.h> #include <iostream.h> int main() { int n = 3; // si on veut recuperer la 3 eme ligne int i = 0; // le constructeur de ifstream permet d'ouvrir un fichier en lecture std::ifstream fichier("strtok esséye.txt"); if( fichier )// ce test échoue si le fichier n'est pas ouvert { std::string ligne; // variable contenant chaque ligne lue // cette boucle s'arrête dès qu'une erreur de lecture survien while( std::getline( fichier, ligne )) { if(i == n ) { // afficher la ligne à l'écran std::cout << ligne << std::endl; } i++; } } }
Salut,
Quelques remarques quand même:
les fichiers <string.h>, <fstream.h> et <iostream.h> sont antérieurs à la norme et ne sont gardé que pour rétro-compatibilité...
Ils sont d'autant plus inutiles dans ton code que tu insères les fichiers qui ont pris leur place (<string>,<fstream> et <iostram>).
La seule différence entre les deux versions de ces fichiers vient du fait que, dans les version sans extension, les différentes classes sont déclarées dans l'espace de noms std.
Cela implique "simplement" qu'il faut, au choix:
- fournir le nom avec la portée complete (std::cin, std::string, std::ifstream) ou
- utiliser la directive using namespace std;(mais de préférence pas dans les fichiers d'en-tête quand tu en utilise)
Et comme, de toutes manières, tu utilise les noms en fournissant leur portée complète... c'est une raison de plus pour "virer" les inclusions des version avec l'extension .h
D'un autre coté, tu devrais veiller à suivre une politique stricte en ce qui concerne l'indentation et la mise en forme du code, même si je te laisse totalement libre de celle que tu choisira.
Ainsi, il serait opportun de veiller à ce que la ligne
soit alignée avec la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part while( std::getline( fichier, ligne ))
Cela n'a pas énormément d'importance pour un code aussi court, mais tu verra que, sur des codes plus volumineux (et tu va en écrire, crois moi sur parole
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::string ligne;), cela te facilitera énormément la vie
En outre, la fonction main renvoie normalement un entier (valant 0 si elle s'est terminée correctement), et un compilateur bien réglé aurait du t'indiquer... qu'elle ne renvoie rien dans le code que tu présente.
Enfin, mais cela n'est également qu'un détail, j'aurais préféré une implémentation proche de
Pour le reste, tu vois que, quand on cherche un peu, et qu'on pense à la FAQ, les choses sont "si simples"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 #include <string> #include <fstream> #include <iostream> int main() { /* tant qu'à faire, n peut être constant ;) */ const int n = 3; // si on veut recuperer la 3 eme ligne int i = 0; // le constructeur de ifstream permet d'ouvrir un fichier en lecture std::ifstream fichier("strtok esséye.txt"); if( fichier )// ce test échoue si le fichier n'est pas ouvert { std::string ligne; // variable contenant chaque ligne lue // bouclons tant que nous n'avons pas atteint la ligne souhaitée, // et pour autant que la lecture se passe correctement while( i<n && std::getline( fichier, ligne )) { i++; } // affichons la ligne que nous venons de trouver // ou la dernière qui a été lue // // selon ton souhait, il serait possible de tester si nous avons // bel et bien atteint la lignes que nous voulions std::cout<<str<<std::endl; } // "tant qu'à faire, signalons le problème à l'utilisateur et quittons le // programme sur erreur else { std::cout<<"je n'ai pas su ouvrir le fichier, je vais donc quitter"; return 1; } // la fonction main renvoie d'office un entier valant 0 si // l'application s'est correctement déroulée return 0; }![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Partager