C++ classe fichiers Pour 1 semaine

Résolu
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   -  
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous.
Je dois réaliser un projet qui etant donné 2 fichiers texte passés en parametres , de comparer tous les mots de plus de 3 caracteres présents dans les 2 fichiers de les ainsi que leurs positions en terme de caracteres par rapport au début du fichier!
Toutefois j'aurai penser pouvoir le faire en java mais on nous impose de le faire sous c++.
Je sais ça ne doit pas etre compliqué mais vu que j'ai jamais fait de C++ et qu'on a une semaine
je ne c'est pas comment faire...
SI quelqun peut m'aider cela m'aiderait beaucoup.MERCI
A voir également:

10 réponses

<yassou> Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   75
 
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
Merci mais moi c'est plutot les manipulations de classes (importation d'une classe exterieur,methodes exterieur...)
J'ai essayé mais c'est vraiment different du java que je connais mieux.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Je voi le problème : trop de style java pour le C++.
Oublie la notion d'importation de class. En C++ il faut redéclarer à chaqu foi l'ensemble de la class, ce qui est facilité par l'emploi de #include <machin.h>.
Pour avoir discuter avec un programmeur Java, il faut voir qu'en C++ il y a pas mal de choses qui existent en dehors de class (si si c'est possible), en particulier des fonctions.
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
Bon je mettre où jen suis.La je veux faire 2 classes au debut pour tester si le fichier est bon!
une classe VerificationFichiers.cpp(avec sa classe séparée "header"VerificationFichiers.h) et une classe main qui lance le programme:

VerificationFichiers.h

#define VERIFICATIONFICHIERS_H
#ifndef VERIFICATIONFICHIERS_H
using namespace std;
class VerificationFichiers
{
public :
ifstream fichier1; // Fichier1 en lecture
ifstream fichier2; // Fichier2 en lecture
VerificationFichiers();
bool EstOkFichierRef(ifstream fichier);//Test si le fichier1 est bon
bool EstOkFichierOcr(ifstream fichier);//Test si le fichier2 est bon
//Constructeurs//
VerificationFichiers();
VerificationFichiers(ifstream f1,ifstream f2);
};
#endif
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
Puis la classe VerificationFichiers.cpp

#include "VerificationFichiers.h"
#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>
using namespace std;
class VerificationFichiers
{


public :
bool VerificationFichiers::EstOkFichier1(ifstream fichier){
fichier.open(fichier1, ios::in);// On ouvre le fichier en lecture
if(fichier) return true;
else
return false;

fichier.close();}//EstOkFichier1(ifstream fichier)


};
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
Puis le main

#include <iostream>
#include <string>
#include "VerificationFichiers.h"
#include <fstream>
#include <stdlib.h>
using namespace std;

int main(int argc, char *argv[])
{
VerificationFichiers vf;
vf.fichier1=argv[1];
vf.fichier2=argv[2];
return 0;
}
Elle est pas encore finie mais deja elle veut pas de VerificationFichiers.h a la compilation???
J'ai du mal avec les classes en c++
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
https://cpp.developpez.com/faq/cpp/?page=Les-classes-en-Cplusplus#CLASS_header_cpp

ici il y a une explication asssez claire de la règle pour inclure les fichiers.

Il faut que le compilateur connaisse tout pour chaque fichier. Or par exemple dans ton .H tu utilises un "ifstream" (qui est déclaré dans <fstream> il me semble) mais il n'est pas inclus.
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10 > Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention  
 
Merci ca a enlever certains bugs
tu peux me dire c'est quoi ce bug?
11 E:\Projet2008\Dev-Cpp\Projet\Main.cpp no match for 'operator=' in 'vf.VerificationFichiers::fichier1 = *(argv + 4u)'
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663 > velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention  
 
vf.VerificationFichiers::fichier1 = *(argv + 4u)

moi aussi je te répondrait la meme chose que ton compilateur :o) : tu veux dire quoi avec cette ligne de code ?

fichier1 est un "ifstream" et *(argv + 4u) est euhh.... je ne sais plus trop : une chaine de caractère normalement, mais en tout cas pas un ifstream. donc ton "=" n'a pas de sens pour le compilateur. Il faut créer un ifstream à partir de ton nom de fichier comme char sniper l'a fait plus bas (N°11):
blabla::fichier1 = ifstream( *(argv + 4u) );
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Houlà...
** remarque sur ton .h :
tu met deux foi le constructeur VerificationFichiers();
par contre, pour tes fichier1 et fichier2, tu utilise ifstream. Or tu les les utilise plutôt comme des char*
Comme il a été dit, il manque #include <fstream>
** remarque sur ton verif*.cpp
Les include c'est bien. Par contre, ça ne ser à rien de refaire un "class verificationfichier { ..." puisque la déclaration à déjà été faite dans ce fichier pa l'ajoue de #include "verificationfichiers.h"
l'ajoue de VerificationFichier:: devant estOkFichier1 est suffisant pour résudre la portée
** remarque sur le main
Tu essai d'affecté un char* à un ifstream dans les deux lignes
vf.fichier1=argv[1];
vf.fichier2=argv[2];
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
Oui ca été enlever merci abus surement de copie-coller...
donc comment resoudre le probleme

Tu essai d'affecté un char* à un ifstream dans les deux lignes
vf.fichier1=argv[1];
vf.fichier2=argv[2];

Je suis débutant donc je cale beaucoup.Merci quand meme tout le monde
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Je pense qu'il faut revoir ton programme entièrement.
Je suis malheuresement assez mal à l'aise avec les ifstream.
Je dirai :
vf.fichier1=ifstream(argv[1]);
et
bool VerificationFichiers::EstOkFichier1(){
//fichier1.open(ios::in);fichier déjà ouvert
if(fichier1) return true; // if(!fichier1.fail())
else
return false;
Masource d'info : https://en.cppreference.com/w/
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
vf.fichier1=ifstream(argv[1]); marche pas !?

Le truc c'est comment recuperer un fichier passer en argument. car le fichier type ifstream et argument type char* !
Je
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
bon, ba il faut passer par des pointeur :
class verif...{
ifstream* fichier1;
}
puis :
vf.fichier1=new ifstream(argv[1]);
Et on appel fichier1->fail();
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
Ca a l'air detre bon ya plus de bug donc je vais essayer de continuer.
Par contre j'ai pas compris "Et on appel fichier1->fail();"?
Merci beaucoup il va falloir que je sache utiliser les pointeurs du moins pour fichier1 et fichier 2 pour la suite?
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299 > velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention  
 
oui, en effet, il va falloir passer par les pointeurs. à moins que...
VerificationFichiers.h

#define VERIFICATIONFICHIERS_H
#ifndef VERIFICATIONFICHIERS_H
#include <fstream>
#include <string>
using namespace std;
class VerificationFichiers
{
public :
ifstream fichier1; // Fichier1 en lecture
ifstream fichier2; // Fichier2 en lecture
string nomF1,nomF2;
bool EstOkFichierRef(string fichier);//Test si le fichier1 est bon
bool EstOkFichierOcr(string fichier);//Test si le fichier2 est bon
//Constructeurs//
VerificationFichiers();
VerificationFichiers(string f1,string f2);
};
#endif

VerificationFichiers.cpp

#include "VerificationFichiers.h"
#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>
using namespace std;
bool VerificationFichiers::EstOkFichierRef(string fichier){
     fichier1.open(fichier, ios::in);// On ouvre le fichier en lecture
      if(fichier1) return true;
      else
         return false;
      fichier1.close();
}//EstOkFichier1(ifstream fichier)
Et min.cpp
#include <iostream>
#include <string>
#include "VerificationFichiers.h"
#include <fstream>
#include <stdlib.h>
using namespace std;

int main(int argc, char *argv[])
{
VerificationFichiers vf;
vf.nomF1=argv[1];
vf.nomF2=argv[2];
vf.EstOkFichierRef(vf.nomF1);
return 0;
} 
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
Vous auriez pas un lien pour le cours sur le "map" Merci
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
https://cpp.developpez.com/faq/cpp/?page=La-STL#STL_choix_conteneur

c'est pas sur les map mais sur les conteneurs de la bibliotheque standard de modèle (STL) en général.

Pour les map voici un lien aussi, mais je trouve que ça manque un peu d'infos et d'exemples, j'ai pas mieux sous la main :

http://www.cplusplus.com/reference/map/map/
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10 > Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Pacorabanix t'aurai pas un exemple d'utilisation stp.
Car la j'essaie d'inserer chaque mots de plus de 3 caracteres du fichier et sa postion
avec key=mot et value = position ?
Merci
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
J'ai revu mon probleme initial autrement :
J'ai principalement 3 classes :

-main qui lit les fichiers en parametre et lance les autres classes

-classe CreationListe avec des fonctions:
insererMotLue();//ajoute le mot et sa position
affichageListe();//affiche le fichier qui contient les mots lus e tleur position!
...
Donc est ce que faire un map c'est utile ici et comment proceder?
Merci
0