PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Template Parameter in string wandeln


Fruli-Tier
2008-07-19, 11:52:24
Aloa He

Gleich vorne weg: Für mein Problem habe ich eine Lösung, mich interessiert nur, ob es einen anderen Weg gibt und wenn ja, wie der aussehen könnte.

Ausgangssituation
Ich hab' eine Klasse, die den operator<< mit verschiedenen Typen überlädt (int, float und eigene Klassen). Da für alle Typen letztlich aber das Gleiche getan wird, nutzt diese Klasse intern eine Methode, die einen Template Parameter entgegen nimmt.

vereinfachte Klassendeklaration:

class CoolerStreamer {
public:
CoolerStreamer & operator<<(int Value);
CoolerStreamer & operator<<(float Value);
CoolerStreamer & operator<<(EigeneKlasse Value);

private:
template <class T> void handleValue(T Value) {
// hier soll Value in einen String gewandelt werden
}
};

Meine bisherige Lösung ist ein feiner drei-Zeiler, der sich eines Streams bedient:

StringStream strm;
strm << Value;
String result = strm.str();

Funktioniert wunderbar.
Allerdings frage ich mich, ob das nicht auch anders machbar ist. Ist es das?

ScottManDeath
2008-07-20, 01:18:18
boost::lexical_cast, was aber mehr oder weniger auch nur ein gepimpter Stream ist.