2010-04-11 56 views
0

我得到了一個地址示例:0x003533,它是一個字符串,但要使用它,我需要它是一個長,但我不知道該怎麼做:S有人有解決方案?C++地址字符串 - >長

so string:「0x003533」to long 0x003533 ??

回答

5

使用strtol()爲:

 
#include <cstdlib> 
#include <string> 

// ... 
{ 
    // ... 
    // Assume str is an std::string containing the value 
    long value = strtol(str.c_str(),0,0); 
    // ... 
} 
// ... 
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 
} 
+0

AKA '的boost :: lexical_cast' – Potatoswatter 2010-04-11 13:08:12

相關問題