Classe d'ouverture et d'ecriture de fichier en mode binaire et texte sous vc++

Description

Classe qui peut s'averer très utile pour ceux qui ne comprennent pas comment on fait pour ouvrir/ecrire un fichier en mode texte/binaire. Créé sous VC++ 6.0. Seul petit bug : La fonction permettant de récuperer le contenu d'un fichier en mode texte qui bugge ! Mais si quelqu'un connait un moyen d'y arriver, qu'il n'hesite pas à me le dire a mon adresse
e-mail : goofy.jp@wanadoo.fr

Source / Exemple :


// 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 ... */

Codes Sources

A voir également

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.