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.



  • Hallo

    Irgendwie sehe ich keine Frage...
    aber schau dir einfach lexicl_cast an

    bis bald
    akari



  • 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!


Anmelden zum Antworten