Une classe pour gérer les fichiers en mode binaire

Soyez le premier à donner votre avis sur cette source.

Vue 4 547 fois - Téléchargée 192 fois

Description

// class FILEio
///////////////////

class FILEio
{
private:
fstream F;
long *Pos;

public:
FILEio(void);
FILEio(char *);
~FILEio(void);

int peek(void);
int get(void);
char convASCII(char);
void put(char);

void DEBUT(void);
void seekg(long pos);
void seekg(long,enum ios::seek_dir);
long tellg(void);
void FIN(void);

long Size(void);
long Find(long pos,char c);
};

FILEio::FILEio(void)
{
F.open("Defaut.txt",ios::in|ios::out|ios::binary);
};

FILEio::FILEio(char *file)
{
F.open(file,ios::in|ios::out|ios::binary);
};

FILEio::~FILEio(void)
{
F.close();
};

int FILEio::peek(void)
{
return F.peek();
};

int FILEio::get(void)
{
return((F.peek()!=EOF)?F.get():EOF);
};

char FILEio::convASCII(char chr)// cette fonction converti les
{ // caractéres accentué provenant de NOTEPAD.EXE, WORDPAD.EXE,
// ou WRITE.EXE en caractéres ASCII affichable à l'écran
int chrI=(int)chr;
switch(chrI)
{
case 'é':
chrI=0x82;
break;

case 'ê':
chrI=0x88;
break;

case 'è':
chrI=0x8A;
break;

case 'à':
chrI=0x85;
break;

case 'ô':
chrI=0x93;
break;

case 'ï':
chrI=0x8B;
break;

case '²':
chrI=0xFD;
break;

case 'ç':
chrI=0x87;
break;

case '°':
chrI=0xF8;
break;

case '..': // .. (shift+ '^') n'existe pas dans le code ASCII standard
chrI=0xFB;// Racine ,choix arbitraire du fait que
break; // ^ est généralement utiliser pour la puissance

case '£':
chrI=0x9C;
break;

case 'ù':
chrI=0x97;
break;

case 'µ':
chrI=0xE6;
break;

case '§':
chrI=0x15;
break;

default: break;
};

return (char)chrI;
};

void FILEio::put(char chr)
{
F.put(chr);
};

void FILEio::DEBUT(void)
{
F.seekg(0L);// se place au debut du fichier
};

void FILEio::seekg(long pos)
{
F.seekg(pos);// se place dans le fichier à la position pos
};

void FILEio::seekg(long off,enum ios::seek_dir ori)
{
F.seekg(off,ori);// se place dans le fichier à la position off
}; // par rapport à l'origine
// ( ios::beg , ios::cur , ios::end )

long FILEio::tellg(void)
{
return F.tellg();
};

void FILEio::FIN(void)
{
F.seekg(0L,ios::end);// se place à la fin du fichier
};

long FILEio::Size(void)
{
long pos=F.tellg(); // sauve la position courante
F.seekg(0L,ios::end);// se place à la fin du fichier
long size=F.tellg(); // sauve la position du curseur ( fin du fichier )
F.seekg(pos);// se remet à la position courante
return size; // renvoi la taille du fichier en octets
};

// cherche un caractére dans le fichier
// et renvoi le premier trouvé ( ou -1 si non trouvé )
long FILEio::Find(long pos,char c)
{
char chr;
long pos_old=F.tellg(),posi=-1;
F.seekg(pos);// recherche à partir de pos

while(F.peek()!=EOF)
{
chr=F.get();
// cherche le premier caractére c dans le fichier
if(chr==c)
{
posi=F.tellg()-1;// sauve la position du caractére
F.seekg(pos_old);// remet le curseur à sa position de départ
return posi;// renvoi la position du caractere
}
}
F.seekg(pos_old);// remet le curseur à sa position de départ
return posi;// renvoi la position du caractere
}; // revoi -1 si non trouvé

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Zazour
Messages postés
120
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
14 janvier 2006

si le zip est protégé,il faut le dire.
winoc
Messages postés
1
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
25 septembre 2003

g telecharger le zip, dedans ya un fichier .rar, mais j'arrive pa a ouvrir ce dernier

"""C:glut cppfrance_source_16610.zip: Méthode inconnue dans glut3d_src.rar
! C:glut cppfrance_source_16610.zip: Pas de fichier à extraire"""

si qq1 a une idée je suis preneur.
Zazour
Messages postés
120
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
14 janvier 2006

Peut tu donner ta méthode de compression,car en plus on ne voit pas le contenu du zip par le site.

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.