Лучше использовать 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
, которая возвращает ноль при ошибке).