[c++] extraction dans un fichier
Résolu/Fermé
James56
Messages postés
160
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
1 avril 2022
-
26 sept. 2007 à 03:25
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 1 oct. 2007 à 13:52
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 1 oct. 2007 à 13:52
A voir également:
- [c++] extraction dans un fichier
- Fichier rar - Guide
- Fichier host - Guide
- Téléchargez cette archive (dossier compressé). en extraire tous les fichiers dans un dossier local. quel fichier contient l’expression trouverpix ? ✓ - Forum Windows
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
5 réponses
James56
Messages postés
160
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
1 avril 2022
16
27 sept. 2007 à 02:51
27 sept. 2007 à 02:51
personne peu m'aider ?
James56
Messages postés
160
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
1 avril 2022
16
29 sept. 2007 à 04:27
29 sept. 2007 à 04:27
vraiment personne ?
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
29 sept. 2007 à 15:24
29 sept. 2007 à 15:24
Le plus simple c'est de travailler avec des expressions régulières avec la lib pcre. Mais si tu débutes c'est pas forcément évident. On va donc utiliser les string en s'inspirant des méthodes décrites ici :
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583
On retiendra
- l'utilisation de la méthode find
- l'utilisation du champ std::string::npos (fin de chaîne)
- l'utilisation du constructeur prenant un tronçon de chaîne
Voici la solution que je te propose
Ensuite on écrit le fichier d'entrée. Dans le programme j'ai mis en dur fichier.txt, arrange ça à ton idée. Voici le contenu du fichier.txt que j'ai utilisé :
Ensuite on compile (là je suis sous linux mais sous windows c'est le même principe)
Et on exécute :
Bonne chance
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583
On retiendra
- l'utilisation de la méthode find
- l'utilisation du champ std::string::npos (fin de chaîne)
- l'utilisation du constructeur prenant un tronçon de chaîne
Voici la solution que je te propose
#include <string>
#include <fstream>
#include <iostream>
int main(){
std::ifstream f_in("fichier.txt");
if (f_in){
std::string line;
while(std::getline(f_in,line)){
const unsigned
pos_par_gauche = line.find('('),
pos_par_droite = line.find(')'),
pos_cro_gauche = line.find('['),
pos_cro_droite = line.find(']');
// Vérifier qu'on a trouvé les 4 caractères
if(pos_par_gauche == std::string::npos
|| pos_par_droite == std::string::npos
|| pos_cro_gauche == std::string::npos
|| pos_cro_droite == std::string::npos) continue;
// Vérifier que leur position est cohérente
if(pos_par_droite < pos_par_gauche
|| pos_cro_droite < pos_cro_gauche) continue;
// Extraire les chaines comprises entre () et []
const std::string
str_par(line,pos_par_gauche+1,pos_par_droite-pos_par_gauche-1),
str_cro(line,pos_cro_gauche+1,pos_cro_droite-pos_cro_gauche-1);
std::cout << "str_par = " << str_par << std::endl
<< "str_cro = " << str_cro << std::endl;
}
f_in.close();
}
return 0;
}
Ensuite on écrit le fichier d'entrée. Dans le programme j'ai mis en dur fichier.txt, arrange ça à ton idée. Voici le contenu du fichier.txt que j'ai utilisé :
(mando@polgara) (~) $ cat fichier.txt bleblilbob blableblilbobblableblilbob blablabla (machin) [5:3:26] blabli (truc) [45:6:2]
Ensuite on compile (là je suis sous linux mais sous windows c'est le même principe)
(mando@polgara) (~) $ g++ -W -Wall -o plop.exe plop.cpp
Et on exécute :
(mando@polgara) (~) $ ./plop.exe str_par = machin str_cro = 5:3:26 str_par = truc str_cro = 45:6:2
Bonne chance
James56
Messages postés
160
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
1 avril 2022
16
1 oct. 2007 à 00:14
1 oct. 2007 à 00:14
je te remercie pour ta reponse c'est vraiment sympas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
1 oct. 2007 à 13:52
1 oct. 2007 à 13:52
Pas de soucis, à bientôt ;)