Ecriture / lecture en c++

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 959 fois - Téléchargée 31 fois

Contenu du snippet

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;
}

A voir également

Ajouter un commentaire Commentaires
Messages postés
15
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
20 septembre 2004

Orius,
tu n'as pas bien lu le code. Tu dois entrée 2 nombres pour que le programme fonctionne, sinon : PLANTAGE !!!

class Nimp{
...
in >> x >> y;
...
int x, y;

tibur,
tu devrais éviter de faire des tests "importants" dans des assert. Ton code n'est validé (par l'assert) qu'en mode débug. En mode release, tu n'as plus aucune sécurité !!!
Messages postés
16
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 juillet 2004

Compile sous Visual C++ sans problème et commenté.

Par contre quand je met le fichier texte. Et que après je tape dans la console pour ecriture dedans ben ya un read error on line 10. Donc chez moi jai pas réussit a voir la lecture et ecriture je suis pas doué peut être ??? :)

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.