Besoin d'aide comparateur de fichier
ketby
Messages postés
2
Statut
Membre
-
KiraX10A Messages postés 260 Statut Membre -
KiraX10A Messages postés 260 Statut Membre -
Bonjour,
Je suis débutant en C++ (mon premier programme) et je but sur un problème qui pour vous devrait être très facile.
J'ai un fichier "toto.csv" qui contient beaucoup de ligne inutile, et un fichier "tata.txt" qui contient les "mots clés" des lignes inutiles du fichiers "toto.csv". En gros, je veux créer un troisième fichier "new_toto.csv" qui sera la version alégée du fichier "toto.csv" (démunie des lignes intules). Voici ce que j'ai fait:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream ifs( "toto.csv" ); //ouverture en lecture du document1
ifstream ifs2( "tata.txt" ); //ouverture en lecture du document2
ofstream ofs( "new_toto.csv" ); //ouverture en écriture du document
string ligne; // déclaration d'une chaîne qui contiendra la ligne lue
string ligne2; // déclaration d'une chaîne qui contiendra la ligne lue
while (getline( ifs2 , ligne2 )) //permet la lecture ligne par ligne du docuement
{
while ( getline( ifs , ligne )) //permet la lecture ligne par ligne du docuement
{
if (ligne.find(ligne2)!= string::npos ) //Si la ligne selectionnée du doc 1 ressemble à la ligne selectionnée du doc2
{
ofs << ligne << endl; //Ecrit dans le doc ouvert
}
}
ifs.clear(); // la sélection du doc1 revient au début
ifs.seekg(0, ios::beg); // la sélection du doc1 revient au début
}
system("PAUSE"); //Met en pause la fenetre exe avant sa fermeture
return 0;
}
Mon soucis ici c'est que je fais l'inverse, le fichier "new_toto.csv" contient toutes les lignes inutiles sans les lignes voulues. Je voudrais pouvoir les supprimer et non n'avoir qu'elles!
J'espère avoir pû être claire. Merci par avance de votre aide.
Je suis ouvert à d'autres solutions! Toute explication sera la bienvenue.
Je suis débutant en C++ (mon premier programme) et je but sur un problème qui pour vous devrait être très facile.
J'ai un fichier "toto.csv" qui contient beaucoup de ligne inutile, et un fichier "tata.txt" qui contient les "mots clés" des lignes inutiles du fichiers "toto.csv". En gros, je veux créer un troisième fichier "new_toto.csv" qui sera la version alégée du fichier "toto.csv" (démunie des lignes intules). Voici ce que j'ai fait:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream ifs( "toto.csv" ); //ouverture en lecture du document1
ifstream ifs2( "tata.txt" ); //ouverture en lecture du document2
ofstream ofs( "new_toto.csv" ); //ouverture en écriture du document
string ligne; // déclaration d'une chaîne qui contiendra la ligne lue
string ligne2; // déclaration d'une chaîne qui contiendra la ligne lue
while (getline( ifs2 , ligne2 )) //permet la lecture ligne par ligne du docuement
{
while ( getline( ifs , ligne )) //permet la lecture ligne par ligne du docuement
{
if (ligne.find(ligne2)!= string::npos ) //Si la ligne selectionnée du doc 1 ressemble à la ligne selectionnée du doc2
{
ofs << ligne << endl; //Ecrit dans le doc ouvert
}
}
ifs.clear(); // la sélection du doc1 revient au début
ifs.seekg(0, ios::beg); // la sélection du doc1 revient au début
}
system("PAUSE"); //Met en pause la fenetre exe avant sa fermeture
return 0;
}
Mon soucis ici c'est que je fais l'inverse, le fichier "new_toto.csv" contient toutes les lignes inutiles sans les lignes voulues. Je voudrais pouvoir les supprimer et non n'avoir qu'elles!
J'espère avoir pû être claire. Merci par avance de votre aide.
Je suis ouvert à d'autres solutions! Toute explication sera la bienvenue.
A voir également:
- Besoin d'aide comparateur de fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
3 réponses
Bonjour,
Ce que je ferais moi:
Je parcours dabord le premier fichier que je souhaite comparer (ici "toto.csv"), je le lis et place son contenu dans un tableau de taille dynamique.
Idem pour le fihcier 2 ("tata.txt").
Ensuite tu compares tes deux tableaux.
Pour celà, tu utilises deux boucles for imbriquées.
La première boucle parcourant ton premier tableaux et ta deuxieme boucle parcourant le second tableau.
Ensuite, dans la seconde boucle for (celle qui parcours donc le deuxieme tableau) tu écris tes conditions => si la ligne du premier tableau contient des mots clée de la ligne du second tableau, alors on affiche cette ligne; sinon on sort de la deuxieme boucle et on passe a la ligne suivante.
En résumé, tu parcours Tableau1 ligne par ligne, tu compares chaque ligne avec toutes les lignes du tableau2; si une ligne du tableau1 contient les mots clée d'une ligne du tableau2, alors on affiche cette ligne.
Je pense ensuite qu'il n'est pas très dure de faire en sorte qu'au lieu d'afficher cette ligne, on l'écrive dans le fichier "new_toto.csv".
J'espere t'avoir éclairer un petit peu.
N'hésite pas si tu as des questions.
Kira
Ce que je ferais moi:
Je parcours dabord le premier fichier que je souhaite comparer (ici "toto.csv"), je le lis et place son contenu dans un tableau de taille dynamique.
Idem pour le fihcier 2 ("tata.txt").
Ensuite tu compares tes deux tableaux.
Pour celà, tu utilises deux boucles for imbriquées.
La première boucle parcourant ton premier tableaux et ta deuxieme boucle parcourant le second tableau.
Ensuite, dans la seconde boucle for (celle qui parcours donc le deuxieme tableau) tu écris tes conditions => si la ligne du premier tableau contient des mots clée de la ligne du second tableau, alors on affiche cette ligne; sinon on sort de la deuxieme boucle et on passe a la ligne suivante.
En résumé, tu parcours Tableau1 ligne par ligne, tu compares chaque ligne avec toutes les lignes du tableau2; si une ligne du tableau1 contient les mots clée d'une ligne du tableau2, alors on affiche cette ligne.
Je pense ensuite qu'il n'est pas très dure de faire en sorte qu'au lieu d'afficher cette ligne, on l'écrive dans le fichier "new_toto.csv".
J'espere t'avoir éclairer un petit peu.
N'hésite pas si tu as des questions.
Kira
Merci Kira pour ta réponse.
Je ne sais pas encore créer un tableau dynamique mais je vais creuser cela.En tout cas, merci pour les pistes ;)
Je ne sais pas encore créer un tableau dynamique mais je vais creuser cela.En tout cas, merci pour les pistes ;)
Ha ok. Bha ecoute cherche du coté des "vector".
Un très bon tuto qui m'a aidé => https://openclassrooms.com/fr/courses#qcm
Hésites pas si tu as d'autre question.
A+ ;)
Un très bon tuto qui m'a aidé => https://openclassrooms.com/fr/courses#qcm
Hésites pas si tu as d'autre question.
A+ ;)