Soyez le premier à donner votre avis sur cette source.
Vue 5 390 fois - Téléchargée 197 fois
// ESfile -> Fichiers d'entrée/sortie du C++ // En têtes necessaires #include <iostream> #include <fstream> // Les using. J'aurais pu mettre using namespace std mais pour eviter les erreurs ... using std::cout; using std::cin; using std::ofstream; using std::ifstream; using std::endl; using std::ios; // Instances ofstream outfile; ifstream infile; class ESFILE { public: //Constructeurs et Destructeurs ESFILE() {} ; ~ESFILE() {} ; // Methodes ASE_open(char * name_file, bool mode); ASE_print(char * chaine, bool end); ASS_open(char * name_file); char * ASS_get(); ABE_open(char * name_file); ABE_write(char *chaine, int longueur); ABS_open(char * name_file); ABS_get(char * entry, int position); AE_close(); AS_close(); bool file_is_opened() {return IS_OPENED;} ; private: bool IS_OPENED; }; ESFILE::ASE_open(char * name_file, bool mode) { if (mode == false) outfile.open(name_file,ios::app); else outfile.open(name_file,ios::trunc); IS_OPENED = true; }; ESFILE::ASE_print(char *chaine, bool end) { if (end == true) outfile << chaine << endl ; else outfile << chaine ; }; ESFILE::ASS_open(char *name_file) { infile.open(name_file); IS_OPENED = true ; }; char * ESFILE::ASS_get() { char ch; int t; char * contenu ; while (infile.get(ch)) { contenu[t] = ch ; t++; }; return contenu ; }; ESFILE::AE_close() { outfile.close(); IS_OPENED = false; }; ESFILE::AS_close() { infile.close(); IS_OPENED = false; }; ESFILE::ABE_open(char *name_file) { outfile.open(name_file,ios::binary); IS_OPENED = true ; }; ESFILE::ABE_write(char *chaine, int position) { outfile.write(chaine, position); }; ESFILE::ABS_open(char *name_file) { infile.open(name_file,ios::binary); IS_OPENED = true ; }; ESFILE::ABS_get(char * entry, int position) { infile.read(entry,position); }; /* EXPLICATIONS A signifie Acces B signifie Binaire(Direct) S signifie Sequentiel S signifie Sortie(lecture) E signifie Entrée(Ecriture) name_file : Nom du fichier à ouvrir mode : false pour le mode Ajout (ecrire a la fin du fichier) et true pour remplacer le fichier s'il existe end : true pour placer un retour chariot (\n) a la fin ou false pour continuer sur la même ligne chaine : chaine ou Caractère à ecrire position : Position à lire longueur : Longueur de la chaine à ecrire entry : Caractere cible où placer le resultat La fonction file_is_opened retourne true si un fichier est ouvert ou false dans le cas contraire ! ATTENTION ! - Ne pas ouvrir plusieurs fichiers a la fois - Ne pas fermer un fichier si aucun n'est ouvert - Ne pas ecrire ou lire une valeur si aucun fichier n'a été ouvert - Arreter de se prendre pour un Programmer Master parcequ'on a trouvé une SuperClasse ... */
4 déc. 2002 à 15:45
Le seul problème c'est que tu as réinventé la roue, mais parfois c'est amusant de le faire :)
4 déc. 2002 à 13:38
1 déc. 2002 à 15:39
Ta var IS_OPENED doit-être true si et seulement si le fichier est bien ouvert. Ainsi avant de lire ou d'écrire tu met un if ( open = true ) et tout ce passera bien. Aussi tu ne vérifies pas si on écrit en dehors du fichier. genre position négative ou trop grande.
Voilà j'espère t'avoir aider pour améliorer ta classe.
1 déc. 2002 à 15:30
Tu devrais proposer plus de mode d'ouverteur. Exemple créer une variable de type enum comprennant tous les modes car il y en a pas mal.
Ce serait cool que t'as fonction retourne un bool afin d'informer que l'ouverture c'est bien passée. Je m'explique: Dans ton cas un fichier peut-être mal ouvert et ta classe ne le remarquera pas, si le fichier spécifier n'existe pas ( mode lecture).
Pourquoi les deux pointeur de fichiers ne sont pas dans ta classe. Ça permetterait d'ouvrir plusieurs fichier en même temps.
Sinon t'as fonction get est beaucoup trop compliqué. Tu devrais faire une fonction get qui renvoi simplement un octect et une autre fonction get qui appel plusieurs fois la get simple.
1 déc. 2002 à 01:49
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.