begin process at 2008 09 06 19:24:00
1 237 887 membres
272 nouveaux aujourd'hui
14 314 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

STD::COUT RECRÉÉ


Information sur la source

Catégorie :Divers Classé sous : std, cout Niveau : Débutant Date de création : 14/04/2007 Date de mise à jour : 19/04/2007 00:31:41 Vu : 1 636

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

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

  • #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
#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
14 avril 2007 00:06:22 :
Changement de la description
14 avril 2007 00:08:21 :
Re-modification de la description
19 avril 2007 00:31:41 :
Modification de stdio.h par cstdio. Merci skone007.

Sources en rapport avec celle ci

  • signaler à un administrateur
    Commentaire de skone007 le 18/04/2007 07:12:43

    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...

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS