Obtenir un mot à partir d'un fichier
Fermé
Othmane-Lh
Messages postés
3
Date d'inscription
dimanche 12 juin 2016
Statut
Membre
Dernière intervention
22 août 2016
-
22 août 2016 à 22:26
mamiemando Messages postés 33030 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 mars 2024 - 14 nov. 2016 à 10:14
mamiemando Messages postés 33030 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 mars 2024 - 14 nov. 2016 à 10:14
A voir également:
- Obtenir un mot à partir d'un fichier
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier host - Guide
- Comment ouvrir un fichier epub ? - Guide
- Piratage facebook changer mot de passe - Guide
1 réponse
mamiemando
Messages postés
33030
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 mars 2024
7 736
Modifié par mamiemando le 30/08/2016 à 10:04
Modifié par mamiemando le 30/08/2016 à 10:04
Bonjour,
Tu peux faire comme ceci :
Ici comme le compteur i part de 0, cela signifie que la 1ère ligne du fichier correspond à j = 0. Si tu préfères numéroter à partir de 1 c'est donc facile à corriger. Ceci dit, compter à partir de 0 est le comportement "classique", c'est notamment cette convention qui est adoptée par
Bonne chance
Tu peux faire comme ceci :
#include <cstdlib> // EXIT_* #include <iostream> // std::cerr #include <fstream> // std::ifstream #include <string> // std::string, std::getline int main(int argc, char **argv) { const char * filename = "/etc/fstab"; std::size_t j = 14; std::string line; std::ifstream ifs(filename); if (ifs) { for (std::size_t i = 0; std::getline(ifs, line); ++i) { if (i == j) break; } } else { std::cerr << argv[0] << ": cannot read " << filename << std::endl; return EXIT_FAILURE; } std::cout << "line = " << line << std::endl; return EXIT_SUCCESS; }
Ici comme le compteur i part de 0, cela signifie que la 1ère ligne du fichier correspond à j = 0. Si tu préfères numéroter à partir de 1 c'est donc facile à corriger. Ceci dit, compter à partir de 0 est le comportement "classique", c'est notamment cette convention qui est adoptée par
tailsous linux.
Bonne chance
10 nov. 2016 à 22:57
Modifié par mamiemando le 14/11/2016 à 10:16
- correspond au numéro de ligne que l'on va extraire (supposée être tiré aléatoirement, ici fixée à 14). C'est un entier positif d'où son type .
- correspond au chemin du fichier dans lequel on va extraire une ligne, ici le fichier , qui existe sous tous les linux. C'est une chaîne de caractère constante, donc on utilise .
- contiendra la ligne qui sera extraite. C'est une chaîne de caractère variable, donc le plus simple est d'utiliser en C++ .
Ensuite on ouvre le fichier. En C++ on utilise des flux (aussi bien pour lire, typiquement avec ou , que pour écrire, typiquement avec ). Ainsi manipuler un fichier en lecture ( ) ou écrire dans la console (qui est vue comme un fichier) avec se fait avec les mêmes primitives.
https://openclassrooms.com/courses/c-les-manipulateurs-de-flux
De deux choses l'une :
- soit le fichier s'ouvre avec succès, dans ce cas le test sera vrai ; Il faudra alors penser à le fermer une fois qu'on a fini de l'utiliser. J'y reviens juste après, regardons d'abord le .
- soit il ne s'ouvre pas (chemin incorrect, permissions insuffisantes...) et dans on affichera un message d'erreur, et on en le fermera pas (vu qu'il n'est pas ouvert). Note que écrit dans la console, mais écrit dans la sortie standard tandis que écrit dans la sortie d'erreur standard. Cette distinction est importante pour envisager de faire des tubes (pipes en anglais) avec les résultats ton programme. Si on est dans ce cas on retourne . Pour rappel, la valeur retournée par correspond au code de retour du programme et permet de savoir à un programme externe si ton programme s'est bien déroulé ou non. Par convention (qui vaut 0) signifie que tout va bien. Toute autre valeur, dont , signifie qu'il y a eu un problème.
Revenons au cas "qui marche".
Dans le , on avance ligne par ligne en incrémentant le numéro de ligne courante et en corrigeant en conséquence. Une fois que on a atteint la ligne désirée.
http://www.cplusplus.com/reference/istream/istream/getline/
Quand on quitte la boucle, contient donc la ligne demandée. On ferme le fichier comme convenu? On conclue le programme en l'affichant dans . Comme tout s'est bien passé, on retourne à terme.
Bonne chance