Sie befinden sich hier : adecc » adecc Blog » Kategorie 1 » Alternativ kann man da nicht viel sagen

Mal ein Versuch

Volker Hillmann

Rückfahrt

So geht es los

Dieses ist der erste Textbereich. Etwas chaotisch, jetzt kann ich im Editor auch di Textausrichtung nicht verändern. Ich habe ihm "links" gesagt, aber er schreibt hier "zentriert". In der Anzeige ist es später dann doch links- Ausgerichtet.

Der folgende Abschnitt zeigt einen Quellcodeabschnitt aus der Roadshow. Er wird sauber angezeigt.

Multiparadigmen in C++

//---------------------------------------------------------------------------

#ifndef WriteH
#define WriteH
//---------------------------------------------------------------------------

#include "MyNumFacet.h"

#include <iostream>
#include <string>
#include <iomanip>
#include <locale>

namespace strukturiert {

void Write(std::string const& strWert, bool boNewLine = false);
void Write(int const& iWert, bool boNewLine = false);
void Write(double const& flWert, bool boNewLine = false, int iScale = 5);

} // Ende Namensraum strukturiert

namespace objektorientiert {

class TWrite {
   public:
	  TWrite(std::ostream& o) : out(o) {
		 out.imbue(std::locale(std::locale("german_germany"), new MyNumPunct));
		 out << std::setiosflags(std::ios::showpoint)
			 << std::setiosflags(std::ios::fixed);
		 };

	  void operator () (std::string const& strWert, bool boNewLine = false) {
		 out << strWert << NL(boNewLine);
		 return;
		 }


	  void operator () (int const& iWert, bool boNewLine = false) {
		 out << iWert << NL(boNewLine);
		 return;
		 }

	  void operator () (double const& flWert, bool boNewLine = false, int iScale = 5) {
		out << std::setprecision(iScale) << flWert << NL(boNewLine);
		return;
		}

   private:
	  std::ostream& out;
	  static const char* const NL(bool boNewLine) { return boNewLine ? "\r\n" : ""; };
   };

extern TWrite Write;

} // Ende Namespace objektorientiert

namespace metaprogrammiert {

template <typename ty>
void Write(ty const& wert, bool boNewLine = false) {
   std::cout << wert << (boNewLine == true ? "\r\n" : "");
   return;
   }

// Da keine unterschiedlichen Versionen sind, kann man templates mit einer veränderten
// Anzahl von Parametern nutzen

template <typename ty>
void Write(ty const& wert, bool boNewLine, int iScale) {
   std::cout << std::setprecision(iScale) << wert << (boNewLine == true ? "\r\n" : "");
   return;
   }

} // Ende Namespace metaprogrammiert

#endif

Beispielcode Roadshow
Übermittlung Ihrer Stimme...
Bewertungen: 5.0 von 5. 1 Stimme(n).
Klicken Sie auf den Bewertungsbalken, um diesen Artikel zu bewerten.
Marc, 23-08-13 00:07:
Das ist nun mein Komentar
Übermittlung Ihrer Stimme...
Noch nicht bewertet. Seien Sie der Erste, der diesen Artikel bewertet!
Klicken Sie auf den Bewertungsbalken, um diesen Artikel zu bewerten.
Kommentar hinzufügen

* - Pflichtfeld

*




*
    Drucken