std::string in int umwandeln
-
Ich habe im Netz folgendes gefunden:
template<typename T> T convertTo(const std::string& fromString) { T toT; std::istringstream(fromString)>>toT; return toT; } ... std::string buffer; buffer = CommandSequenz("mess", m_Channel); double value = convertTo(buffer);was auch sehr elegant zum umwandeln aussieht. Leider kompiliert es bei mir nicht:
error C2783: "T convertTo(const std::string &)": template-Argument für "T" konnte nicht hergeleitet werden.
Ist der Code so überhaupt korrekt, oder wie würde man es richtig machen?
Matthias
-
template<typename T> inline std::string toString(const T& x/*, int precision=15*/) { std::ostringstream oss; //oss<<std::setprecision(precision); oss;<<x; return oss.str(); } template<typename T> inline T stringTo(const std::string& s) { std::istringstream iss(s); T x; iss >> x; if(!iss) std::cerr<<"error"<<std::endl; return x; }ups, du muss zur anwendung den Rückgabetyp angeben (denn kann der compiler nicht automatisch herleiten):
double d = stringTo<double>(buffer);
-
Ist das nicht identisch mit meinem Code? Mir ist daher noch immer unklar warum ich diese Fehlermeldung erhalte.
EDIT: der Tipp mit dem Rückgabetyp fehlte mir...
-
ja, ist quasi identisch.. ausser, dass ich noch einen error check eingebaut habe. und die antwort auf deine eigentliche Frage habe ich beim dritten editieren eingebaut
