0

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

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

4

2 回答 2

5

使用strtol()如下:

#include <cstdlib>
#include <字符串>

// ...
{
   // ...
   // 假设 str 是一个包含值的 std::string
   长值 = strtol(str.c_str(),0,0);
   // ...
}
// ...
于 2010-04-11T09:25:54.823 回答
3
#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
}
于 2010-04-11T12:03:25.140 回答