2012-10-12 110 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; 
} 
相关问题