I am trying to convert treePtr->item.getInvest()
which contains a string to an integer. Is this possible?
#include <sstream>
// ...
string str(*(treePtr->item.getInvest())); // assuming getInvest() returns ptr
istringstream ss(str);
int the_number;
ss >> the_number;
if you have access to boost:
int number= boost::lexical_cast<int>(treePtr->item.getInvest());
Better to use strtol()
than mess around with streams.
const char* s = treePtr->item.getInvest();
const char* pos;
long the_number = ::strtol(s,&pos,10);
if(pos!=s)
// the_number is valid
strtol()
is a better choice because it gives you an indication of whether number returned is valid or not. Furthermore it avoids allocating on the heap, so it will perform better. If you just want a number, and you are happy to accept a zero instead of an error, then just use atol()
(which is just a thin wrapper around strtol
that returns zero on error).