Voila un petit exemple de comment lire écrire les données d'un objet via les flux C++.
On notera que std::ifstream (input file stream) herite de std::istream (input stream) et de meme, std::ofstream (output file stream) herite de std::ostream (output stream)
Source / Exemple :
#include <assert.h>
#include <iostream>
#include <fstream>
class Nimp{
public:
void read(std::istream & in){
assert(in.good()&&"istream not valid");
in >> x >> y;
assert((!in.fail())&&"bad input");
}
void write(std::ostream & out)const{
assert(out.good()&&"ostream not valid");
out << x <<" " << y;
assert((!out.fail())&&"bad output");
}
private:
int x, y;
};
// redefinition de l'operateur <<
inline std::ostream & operator << (std::ostream & out, const Nimp & n){
n.write(out);
return out;
}
// redefinition de l'operateur >>
inline std::istream & operator >> (std::istream & in, Nimp & n){
n.read(in);
return in;
}
int main(){
const char filename [] = "nimperie.txt";
Nimp n;
std::cin >> n; // on lit n depuis stdin
std::ofstream out_file(filename); // on ouvre un fichier en ecriture
out_file.clear(); // on vide le fichier
out_file << n; // on ecrit n dans le fichier
out_file.close(); // on ferme le fichier
Nimp n2;
std::ifstream in_file(filename); // on ouvre un fichier en lecture
in_file >> n2; // on relit n2 depuis le fichier
std::cout << n2; // on ecrit n2 dans stdout
in_file.close(); // on ferme le fichier
return 0;
}
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.