将指针字符串转换为整数

时间:2009-10-31 23:24:47

标签: c++ string integer pointers

我正在尝试将包含字符串的treePtr->item.getInvest()转换为整数。这可能吗?

3 个答案:

答案 0 :(得分:8)

如果您有权访问boost:

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

答案 1 :(得分:6)

#include <sstream>

// ...

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

答案 2 :(得分:3)

最好使用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的一个薄包装,它在出错时返回零)。