У меня есть пример адреса: 0x003533, это строка, но для ее использования мне нужно, чтобы она была ДЛИННОЙ, но я не знаю, как это сделать: у S есть кто-нибудь решение?
строка: от 0x003533 до 0x003533 ??
Используйте strtol () как в:
#include <cstdlib> #include <string> // ... { // ... // Assume str is an std::string containing the value long value = strtol(str.c_str(),0,0); // ... } // ...
#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, как показано ниже:
boost::lexical_cast
long x = 0L; try { x = lexical_cast<long>("0x003533"); } catch(bad_lexical_cast const & blc) { // handle the exception }