2012-10-12 177 views
-4

可能重複:
How to convert a number to string and vice versa in C++C++如何將十六進制整數轉換爲字符串?

在C++中,你如何轉換爲十六進制整數到原來的十六進制的十進制值的字符串表示?

讓我們說我們有一個整數,其十六進制表示爲a1a56(在小數等於662102),並要將此轉換爲字符串「662102」

你會如何解決這個問題?

PS:我提出一個實用的解決方案作爲一個答案,隨意拍下來(以禮貌的方式,如果可能的話)

+0

那麼這個十六進制數是什麼類型的orignally?串?詮釋?如果它最初是int,那麼就打印出來。 – nhahtdh

+0

@nhahtdh這是int,但我不想打印出來,我需要操縱字符串後(讓我們說我爲MySQL一起查詢)。 thanx 4的輸入! –

+3

@tonygil那麼它不是一個「十六進制整數」。這是一個整數。 *數字*沒有基數。代表做。 –

回答

3

您可以使用stringstreams:

int x = 0xa1a56; 
std::stringstream ss; 
ss << x; 
cout << ss.str(); 

或者如果你喜歡功能:

std::string convert_int(int n) 
{ 
    std::stringstream ss; 
    ss << n; 
    return ss.str(); 
} 

編輯:請確保您#include <sstream>

0
std::string HexDec2String(int hexIn) { 
    char hexString[4*sizeof(int)+1]; 
    // returns decimal value of hex 
    sprintf(hexString,"%i", hexIn); 
    return std::string(hexString); 
} 
+2

'char hexString [4 * sizeof( int)+1];'應該夠了。 –

6

您可以從一個字符串流爲十六進制閱讀次數,並把它寫回不同的字符串流爲十進制:

int x; 
istringstream iss("a1a56"); 
iss >> hex >> x; 
ostringstream oss; 
oss << x; 
string s(oss.str()); 

Link to ideone.

3

這樣做的最簡單的方法,採用了最新的版本的C++標準(C++ 11),就是使用std::to_string函數:

#include <iostream> 
#include <string> 

int main() 
{ 
    /* Convert: */ 
    std::string s { std::to_string(0xa1a56) }; 

    /* Print to confirm correctness: */ 
    std::cout << s << std::endl; 
    return 0; 
} 
相關問題