Rechercher : dans
Par :

Besoin d'aide comparateur de fichier

Dernière réponse le 15 oct 2009 à 14:59:33 ketby, le 15 oct 2009 à 10:30:34 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « Besoin d'aide comparateur de fichier » dans :
[md5sum] Vérifier l'intégrité des téléchargements VoirSomme MD5 Introduction I - Windows I-1 - Pour les puristes de la ligne de commande (sous "Dos") I-2 - Pour les inconditionnels de l'interface graphique "GUI" mst MD5 WinMD5 winMd5Sum II - GNU/LInux II-1 -Dans une console II-2 Pour les...
Télécharger PSPad VoirPSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS, Javascript, php ou autres langages de programmation (C++, Java, Python...). Les fonctionnalités sont impressionnantes: ...
Fichier DAA VoirFormat DAA Un fichier DAA s'ouvre avec Power ISO (littéralement PowerISO Direct-Access-Archive). PowerISO est un outil permettant d'ouvrir, d'extraire, de créer ou d'éditer des images de CD ou de DVD et de les convertir en images ISO. Comparées...
Fichier ISO (Image ISO) VoirFormat ISO Un fichier possédant l'extension .ISO est une image ISO, c'est-à-dire une image d'un disque (CD, DVD ou disque dur) sous forme de fichier, créer avec un logiciel de gravure. Comment lire un fichier ISO ? En l'absence de graveur, il...
Apache - Les fichiers .htaccess VoirLes fichiers .htaccess sont des fichiers de configuration d'Apache, permettant de définir des règles dans un répertoire et dans tous ses sous-répertoires (qui n'ont pas de tel fichier à l'intérieur). On peut les utiliser pour protéger un répertoire...

1

KiraX10A, le 15 oct 2009 à 11:23:24

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

Répondre à KiraX10A

2

ketby, le 15 oct 2009 à 14:57:43

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 ;)

Répondre à ketby

3

 KiraX10A, le 15 oct 2009 à 14:59:33

Ha ok. Bha ecoute cherche du coté des "vector".
Un très bon tuto qui m'a aidé => http://www.siteduzero.com/tutoriel-3-8937-les-tableaux-dynamiques.html#qcm

Hésites pas si tu as d'autre question.
A+ ;)

Répondre à KiraX10A