Stringdarstellung der Objekten
-
Ich will ein Objekt als string darstellen. Später werde ich ihn in eine Datei speichern.
template <class T> std::string convert_str(const T &t) { std::ostringstream buf(t); std::string x; buf << x; return x; }Z.B.:
convert_str<double>(3.14);soll als Ergebniss "3.14" sein.
-
-
Whoops, ich habe vergessen zu sagen, dass das obige Source nicht funkzioniert. Aus einem std::string kann ich das Objekt kriegen (z.B. <double>"3.14" wird zu double 3.14). Ich dachte, dass die umgekehrte Operation mit den umgekehrten Anweisungen durchzuführen ist. Aber es klappt nicht.
-
Hallo
und was hindert dich, die Funktion lexical_cast aus meinem Link zu verwenden? Denn sie macht genau das was du willst.
bis bald
akari
-
Um auf den obigen Code zurückzukommen. Der funktioniert nicht, weil stringstream keinen Konstruktor hat, welcher einen double übernimmt. Hie muß man die stream-Operatoren verwenden.
template <class T> std::string convert_str(const T &t) { std::stringstream buf; buf << t; std::string x; buf >> x; return x; }oder
template <class T> std::string convert_str(const T &t) { std::stringstream buf; buf << t; return buf.str(); }Man könnte hier noch eine Fehlerbehandlung einführen.
-
Braunstein, danke sehr!