Ecriture / lecture en c++

3/5 (2 avis)

Snippet vu 12 159 fois - Téléchargée 34 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
cs_fll Messages postés 15 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 septembre 2004
1 juin 2005 à 11:21
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é !!!
cs_orius Messages postés 16 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 juillet 2004
3 juil. 2004 à 00:28
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.