我正在尝试将包含字符串的treePtr->item.getInvest()
转换为整数。这可能吗?
答案 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
的一个薄包装,它在出错时返回零)。