D-Boy
D-Boy

Reputation: 13

convert pointer string to integer

I am trying to convert treePtr->item.getInvest() which contains a string to an integer. Is this possible?

Upvotes: 1

Views: 3347

Answers (3)

Gustavo Muenz
Gustavo Muenz

Reputation: 9552

if you have access to boost:

int number= boost::lexical_cast<int>(treePtr->item.getInvest());

Upvotes: 8

alex tingle
alex tingle

Reputation: 7221

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).

Upvotes: 4

wilhelmtell
wilhelmtell

Reputation: 58677

#include <sstream>

// ...

string str(*(treePtr->item.getInvest())); // assuming getInvest() returns ptr
istringstream ss(str);
int the_number;
ss >> the_number;

Upvotes: 6

Related Questions