Std::cout recréé

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 214 fois - Téléchargée 20 fois

Contenu du snippet

Ce code montre l'utilisation des templates, namespaces et des surchargement d'opérateurs.
Sa s'utilise comme le cout habituel de iostream.

exemple :
mystd::cout << "string" << endl << hex << 15 << endl;

Source / Exemple :


#ifndef iostream
#define iostream

#include <cstdio>
#include <typeinfo>

namespace mystd{

	class CEndl{};
	class CHex{};

	class CCout{
	private:
		bool hex;
	public:
		CCout(){
			hex=false;
		}
		~CCout(){

		}

		template <class T> CCout& operator << (T t){
			if(typeid(int) == typeid(t)){
				if(hex == true){
					printf("%X ", t);
					hex = false;
				}else
					printf("%d ", t);
			}else if(typeid(double) == typeid(t)){
				printf("%f ", t);
			}else if(typeid(float) == typeid(t)){
				printf("%f ", t);
			}else if(typeid(char *) == typeid(t)){
				printf("%s ", t);
			}else if(typeid(char) == typeid(t)){
				printf("%c ", t);
			}else if(typeid(CEndl) == typeid(t)){
				printf("\r\n", t);
			}else if(typeid(CHex) == typeid(t)){
				hex = true;
			}
			return *this;
		}
	};

	CCout cout;
	CEndl endl;
	CHex hex;
}

#endif

A voir également

Ajouter un commentaire

Commentaire

Messages postés
166
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
23 juin 2009

Pas mal :) ça me fait sourire :) mais attention quelqu'un d'autre de le dira : on met #include <cstdio> et plus #include <stdio.h> voilà :) Sinon pas mal not bad...

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.