C++ classe fichiers Pour 1 semaine
Résolu/Fermé
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
-
26 févr. 2008 à 17:07
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 - 28 févr. 2008 à 11:19
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 - 28 févr. 2008 à 11:19
A voir également:
- C++ classe fichiers Pour 1 semaine
- Wetransfer gratuit fichiers lourd - Guide
- Renommer plusieurs fichiers - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
- Fichiers epub - Guide
10 réponses
<yassou>
Messages postés
589
Date d'inscription
lundi 17 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2015
75
26 févr. 2008 à 17:28
26 févr. 2008 à 17:28
slt,
regarde ça et bon courage
http://h-deb.clg.qc.ca/Sujets/AuSecours/Manipuler-fichiers.html
regarde ça et bon courage
http://h-deb.clg.qc.ca/Sujets/AuSecours/Manipuler-fichiers.html
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 févr. 2008 à 10:02
27 févr. 2008 à 10:02
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.
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.
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
10
27 févr. 2008 à 10:23
27 févr. 2008 à 10:23
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
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
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
10
27 févr. 2008 à 10:24
27 févr. 2008 à 10:24
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)
};
#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)
};
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
10
27 févr. 2008 à 10:26
27 févr. 2008 à 10:26
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++
#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++
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
27 févr. 2008 à 11:17
27 févr. 2008 à 11:17
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.
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.
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
10
>
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
27 févr. 2008 à 11:29
27 févr. 2008 à 11:29
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)'
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)'
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
>
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
27 févr. 2008 à 13:13
27 févr. 2008 à 13:13
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) );
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) );
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 févr. 2008 à 11:52
27 févr. 2008 à 11:52
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];
** 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];
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
10
27 févr. 2008 à 12:10
27 févr. 2008 à 12: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
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
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 févr. 2008 à 12:34
27 févr. 2008 à 12:34
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/
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/
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
10
27 févr. 2008 à 13:42
27 févr. 2008 à 13:42
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
Le truc c'est comment recuperer un fichier passer en argument. car le fichier type ifstream et argument type char* !
Je
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 févr. 2008 à 14:01
27 févr. 2008 à 14:01
bon, ba il faut passer par des pointeur :
class verif...{
ifstream* fichier1;
}
puis :
vf.fichier1=new ifstream(argv[1]);
Et on appel fichier1->fail();
class verif...{
ifstream* fichier1;
}
puis :
vf.fichier1=new ifstream(argv[1]);
Et on appel fichier1->fail();
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
10
27 févr. 2008 à 14:18
27 févr. 2008 à 14:18
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?
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?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
>
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
27 févr. 2008 à 17:08
27 févr. 2008 à 17:08
oui, en effet, il va falloir passer par les pointeurs. à moins que...
VerificationFichiers.h
VerificationFichiers.cpp
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; }
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
10
27 févr. 2008 à 15:50
27 févr. 2008 à 15:50
Vous auriez pas un lien pour le cours sur le "map" Merci
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
28 févr. 2008 à 09:31
28 févr. 2008 à 09:31
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/
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/
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
10
>
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
28 févr. 2008 à 11:13
28 févr. 2008 à 11:13
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
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
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
10
28 févr. 2008 à 11:19
28 févr. 2008 à 11:19
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
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
27 févr. 2008 à 09:49
J'ai essayé mais c'est vraiment different du java que je connais mieux.