no save
Assistance
Achat
News

Forum | programmation
[C++] surcharge des operateurs >> et fichier
kiroukou, le ven. 15 avr. 2005 à 07:47:52
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 :)
++


SKZ
avr. 05
Suivant
REPONSES
SKZ
avr. 05
tafiscobar
avr. 05
SKZ
avr. 05
kiroukou
avr. 05
Wani
avr. 05
SKZ
avr. 05
kiroukou
avr. 05
Wani
avr. 05
Ader
avr. 08
Version Web
Réalisé par RedShift
no save