将指针字符串转换为整数

发布于 2024-08-09 18:57:11 字数 73 浏览 1 评论 0原文

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

幽梦紫曦~ 2024-08-16 18:57:11

如果您有权获得提升:

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

if you have access to boost:

int number= boost::lexical_cast<int>(treePtr->item.getInvest());
别忘他 2024-08-16 18:57:11
#include <sstream>

// ...

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

// ...

string str(*(treePtr->item.getInvest())); // assuming getInvest() returns ptr
istringstream ss(str);
int the_number;
ss >> the_number;
巾帼英雄 2024-08-16 18:57:11

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文