адресная строка c ++ -> long - PullRequest
       12

адресная строка c ++ -> long

0 голосов
/ 11 апреля 2010

У меня есть пример адреса: 0x003533, это строка, но для ее использования мне нужно, чтобы она была ДЛИННОЙ, но я не знаю, как это сделать: у S есть кто-нибудь решение?

строка: от 0x003533 до 0x003533 ??

Ответы [ 2 ]

5 голосов
/ 11 апреля 2010

Используйте strtol () как в:

#include <cstdlib>
#include <string>

// ...
{
   // ...
   // Assume str is an std::string containing the value
   long value = strtol(str.c_str(),0,0);
   // ...
}
// ...
3 голосов
/ 11 апреля 2010
#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:

Как сказал Потатокорн в комментариях, вы также можете использовать boost::lexical_cast, как показано ниже:

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