c++地址字符串->长的

发布于 2024-08-28 02:04:47 字数 113 浏览 15 评论 0原文

我有一个地址示例: 0x003533 ,它是一个字符串,但要使用它,我需要它是一个 LONG 但我不知道该怎么做:S 有任何人有解决方案吗?

所以字符串:“0x003533”到长0x003533?

I got an adress example: 0x003533 , its a string but to use it i need it to be a LONG but i dont know how to do it :S has anybody a solution?

so string: "0x003533" to long 0x003533 ??

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

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

发布评论

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

评论(2

千秋岁 2024-09-04 02:04:47

使用 strtol() ,如下所示:

#include <cstdlib>
#include <string>

// ...
{
   // ...
   // Assume str is an std::string containing the value
   long value = strtol(str.c_str(),0,0);
   // ...
}
// ...

Use strtol() as in:

#include <cstdlib>
#include <string>

// ...
{
   // ...
   // Assume str is an std::string containing the value
   long value = strtol(str.c_str(),0,0);
   // ...
}
// ...
挽袖吟 2024-09-04 02:04:47
#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main() {
  string s("0x003533");
  long x;
  istringstream(s) >> hex >> x;
  cout << hex << x << endl; // prints 3533
  cout << dec << x << endl; // prints 13619
}

编辑:

正如Potatocorn在评论中所说,您还可以使用boost::lexical_cast 如下所示:

long x = 0L;
try {
  x = lexical_cast<long>("0x003533");
}
catch(bad_lexical_cast const & blc) {
  // handle the exception
}
#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main() {
  string s("0x003533");
  long x;
  istringstream(s) >> hex >> x;
  cout << hex << x << endl; // prints 3533
  cout << dec << x << endl; // prints 13619
}

EDIT:

As Potatocorn said in the comments, you can also use boost::lexical_cast as shown below:

long x = 0L;
try {
  x = lexical_cast<long>("0x003533");
}
catch(bad_lexical_cast const & blc) {
  // handle the exception
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文