S'abonner :  Newsletters    Magazines
Avis sur les produits Avis sur les logiciels Avis sur les jeux Actualités A propos de 01net
181 utilisateurs connectés

Lire et écrire dans un fichier à partir d'une classe c++

cathy9999 le 12 juin 2008 à 15h15
Bonjour, je souhaite réaliser une gestion de clients en c++, c'est à dire me permettre d'afficher, ajouter, modifier ou supprimer un client qui serait présent dans un fichier texte a chaque ajout.
J'ai réalisé classe.h regroupant la classe mere, mon souci est que je ne sais pas comment manier une lecture, ecriture ou suppression dans un fichier, j'aimerais si possible un exemple.
classe.h
#include <iostream>
#include <string>

class PERSONNE
{
protected:
std::string adresse;
std::string cp;
std::string ville;
int annee_entree;
int annee_sortie;
public:
void afficher();
void add();
void del();
};


class CLIENT :public PERSONNE
{

private:
std::string nom;
std::string prenom;
public:
CLIENT();
CLIENT(const std::string& _nom, const std::string& prenom ,const std::string & add,const std::string& _cp,const std::string& _ville,int _entree, int _sortie)
{
nom= _nom;
prenom= _prenom;
adresse=_add;
cp=_cp;
ville=_ville;
annee_entree=_entree;
annee_sortie=_sortie;

}
void afficher();
void add();
void del();
};



main.cpp

#include "classes.h"

CLIENT::CLIENT():PERSONNE()
{}

void CLIENT::afficher()
{
//nom|prenom|adresse|cp|ville|année entre| année sortis
using namespace std;
cout << prenom << adresse << cp << ville << annee_entree << annee_sortie << endl;
}

void CLIENT::add()
{ }

void CLIENT::del()
{}
sangen le 19 juin 2008 à 02h41
/* L'exemple suivant ouvre le fichier "Moche.dat" (le créé s'il n'existe pas), efface son contenu, écrit des données à l'intérieur, puis les récupère dans un tampon, et ensuite ferme le fichier et affiche le contenu, à l'aide de printf() (que je recommande par rapport à cout, car beaucoup plus rapide et léger). */

// Inclut les bibliothèques.

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

// Déclare les fonctions.

void error(void);
void inline pause(void);
void inline ShowContent(LPCSTR lpContent, const DWORD dwLength);

// Définit les fonctions.

int main(void)
{
/* Fonction principale. */

// Variables.

DWORD dwNumberOfBytesRead = NULL; // Nombre d'octets lus.
DWORD dwNumberOfBytesToRead = NULL; // Nombre d'octets à lire.
DWORD dwNumberOfBytesWritten = NULL; // Nombre d'octets écrits.
HANDLE hUglyFile = NULL; // Handle du fichier "Moche.dat".
LPCSTR szUglySentence = "Tout le monde est moche !"; // Contenu à écrire.
LPSTR lpUglyContent = NULL; // Pointeur vers le contenu du fichier.

// Définit le titre de la fenêtre.

if(!(SetConsoleTitle("UglyWorld")))
error();

// Créé le fichier "Moche.dat".

hUglyFile = CreateFile("Moche.dat", (GENERIC_READ | GENERIC_WRITE), FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

if(!(hUglyFile))
error();

// Place le pointeur du fichier au début de celui-ci.

if(SetFilePointer(hUglyFile, 0, NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER)
error();

// Efface le contenu du fichier.

if(!(SetEndOfFile(hUglyFile)))
error();

// Ecrit le contenu.

if(!(WriteFile(hUglyFile, szUglySentence, (DWORD)strlen(szUglySentence), &dwNumberOfBytesWritten, NULL)))
error();

// Calcule la taille du fichier.

dwNumberOfBytesToRead = GetFileSize(hUglyFile, NULL);

if(dwNumberOfBytesToRead == INVALID_FILE_SIZE)
error();

// Créé le tampon pour recevoir le contenu du fichier.

if(!(lpUglyContent = new char[dwNumberOfBytesToRead]))
error();

for(UINT counter = 0; counter < dwNumberOfBytesToRead; counter++)
*(lpUglyContent + counter) = NULL;

// Place le pointeur du fichier au début de celui-ci.

if(SetFilePointer(hUglyFile, 0, NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER)
error();

// Lit le contenu.

if(!(ReadFile(hUglyFile, lpUglyContent, dwNumberOfBytesToRead, &dwNumberOfBytesRead, NULL)))
error();

// Ferme le fichier "Moche.dat".

if(!(CloseHandle(hUglyFile)))
error();

// Affiche le contenu.

ShowContent(lpUglyContent, dwNumberOfBytesToRead); // Affiche le contenu.
printf("\n"); // Saute une ligne.
pause(); // Attend qu'une touche soit pressée.

// Supprime le tampon du contenu.

delete lpUglyContent;

return 0;
}

void error()
{
/* Indique qu'une erreur s'est produite. */

printf("****Il y a eu une erreur !****\n"); // Affiche ce message.
printf("\n"); // Saute une ligne.
pause(); // Attend qu'une touche soit pressée.
exit(GetLastError()); // Quitte en retournant le dernier code d'erreur défini.
}

void inline pause(void)
{
/* Effectue une pause. */

printf("Appuyez sur une touche pour quitter...\n"); // Affiche ce message.
getch(); // Attend qu'une touche soit pressée.
}

void inline ShowContent(LPCSTR lpContent, const DWORD dwLength)
{
/* Affiche le contenu du tampon indiqué. */

// Affiche le contenu du tampon indiqué.

for(DWORD dwCurrentPosition = 0; dwCurrentPosition < dwLength; dwCurrentPosition++)
putch(*(lpContent + dwCurrentPosition));

// Termine la ligne.

putch('\n');
}
-->Message édité par sangen le 19/06/2008 02:44:09<--
-------
L'idiot ne sait pas ce qu'il dit, le sage ne dit pas ce qu'il sait.

Confucius
sangen le 19 juin 2008 à 02h46
Je me suis bien éclaté à programmé ça ! Si tu comprend pas tout n'hésite pas !
-------
L'idiot ne sait pas ce qu'il dit, le sage ne dit pas ce qu'il sait.

Confucius


PRODUITS

TÉLÉCHARGER - LOGICIELS

JEUX VIDÉOS

LOISIRS

01NET PRO

AVIS ET COMMENTAIRES

A PROPOS DE 01NET

publicité
> 01netPro :
Rubrique Formation
Actualités et dernières offres mises en ligne.

Service 01net
Newsletters 01net
abonnez vous gratuitement !
  
01Informatique
01 INFORMATIQUE
L'hebdo de référence des décideurs informatiques.
Micro Hebdo
MICRO HEBDO
L'hebdo qui vous simplifie la micro
et Internet.
L'Ordinateur Individuel
L'ORDINATEUR INDIVIDUEL
Le mensuel informatique qui vous informe et vous conseille.
Nous contacter  |  Charte de confiance  |  Voir notice légale

01net.  -  01men  -  RMC  -  BFM Radio  -  BFM TV  -  TousLesPodcasts  -  01informatique.fr  -  Association RMC-BFM
Tous droits réservés © 1999 - 2009 Internext - 01net.