Bonjour.
Me revoila avec un petit problème qui me bloque bien. Il s'agit en gros de pourvoir, a l'aide des operateurs >>, lire un entier ds un fichier texte, et l'attribuer a une variable.
Alors voila une classe :
#include "FileOf.h"
#ifndef _R_FILE_OF_INT_H
#define _R_FILE_OF_INT_H
// --- Classe de gestion de fichiers en lecture.
class R_File_of_Int:public FileOf
{
protected:
//--- Methodes
//--- on concrétise cette classe en implémentant cette méthode
void _open(void) ;
public:
//--- Constructeur / Destructeur
R_File_of_Int(const char*);
virtual ~R_File_of_Int();
//--- surcharges d'opérateur avec fonction amie.
friend void operator>>( R_File_of_Int, int&) ;
};
R_File_of_Int::R_File_of_Int(const char* nom) : FileOf(nom)
{
_open();
}
R_File_of_Int::~R_File_of_Int()
{
;
}
void R_File_of_Int::_open(void)
{
_filestr.open (_fileName, std::fstream::out );
}
//--- partie a mettre en template apres
//--- pour faire instance >> iVal pour lire le caractere ds le fichier et le mettre dans la variable iVal
void operator>>( R_File_of_Int wf, int& val)
{
char chaine[1];
wf._filestr.read (chaine,sizeof(char));
wf.from_string( chaine, val );
}
#endif
FileOf est une classe virtuelle pure me servant de base pour faire des classes de lecture de fichier et d'éctiture de fichier (demandez pas pourquoi , c'est un exo de cours... lol)
Voila ce que naivement je pensais qui pourrai marcher :
#include <iostream>
#include "FileOf.h"
#include "W_File_of_Int.h"
#include "R_File_of_Int.h"
int main()
{
using namespace std;
cout << "test" << endl;
R_File_of_Int f("toto.txt");
if(f)
{
cout << "fichier ouvert" << endl;
int val;
f >> val;
cout << "val = " << val << endl;
}
else
{
cout << "impossible d'ouvrir le fichier" << endl;
}
return 0;
}
L'idée est donc de surcharger l'opérateur >> pour faire une opération de lecture sur le fichier. Seulement bien entendu ca ne marche pas....
Merci d'avance de m'aider à me corriger :)
++

