преобразовать строку указателя в целое число - PullRequest
1 голос
/ 01 ноября 2009

Я пытаюсь преобразовать treePtr->item.getInvest(), который содержит строку, в целое число. Возможно ли это?

Ответы [ 3 ]

8 голосов
/ 01 ноября 2009

, если у вас есть доступ к надстройке:

int number= boost::lexical_cast<int>(treePtr->item.getInvest());
6 голосов
/ 01 ноября 2009
#include <sstream>

// ...

string str(*(treePtr->item.getInvest())); // assuming getInvest() returns ptr
istringstream ss(str);
int the_number;
ss >> the_number;
3 голосов
/ 01 ноября 2009

Лучше использовать strtol(), чем возиться с потоками.

const char* s = treePtr->item.getInvest();
const char* pos;
long the_number = ::strtol(s,&pos,10);
if(pos!=s)
    // the_number is valid

strtol() - лучший выбор, поскольку он дает вам представление о том, является ли возвращенное число действительным или нет. Кроме того, он избегает выделения в куче, поэтому он будет работать лучше. Если вам просто нужно число, и вы счастливы принять ноль вместо ошибки, тогда просто используйте atol() (это просто тонкая оболочка вокруг strtol, которая возвращает ноль при ошибке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...