convert pointer string to integer

江枫思渺然 提交于 2019-12-20 05:26:38

问题


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


回答1:


#include <sstream>

// ...

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



回答2:


if you have access to boost:

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



回答3:


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



来源:https://stackoverflow.com/questions/1655904/convert-pointer-string-to-integer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!