2011-05-09 144 views

回答

7
#include <sstream> 
#include <iostream> 

int main() 
{ 

    std::string s("0xFFF000"); 
    unsigned long value; 
    std::istringstream iss(s); 
    iss >> std::hex >> value; 
    std::cout << value << std::endl; 

    return 0; 
} 
+0

不應該是'std :: setbase(16)'或'std :: hex'嗎? – ildjarn 2011-05-09 08:34:13

+0

是的,不知道爲什麼std :: setbase(0)的作品 – hidayat 2011-05-09 08:37:37

11

您可以使用strtol函數對常規C字符串進行處理。它的字符串轉換爲長期使用指定的基礎:

long l = strtol(str, NULL, 16); 

細節和很好的例子: http://www.cplusplus.com/reference/clibrary/cstdlib/strtol/

+0

你最好不過需要添加一些錯誤處理。 – 2011-05-09 08:31:08

相關問題