2010-11-04 88 views
0

提供API转换_int64为字符串

当我问他们给我一个_int64 10位十六进制数字,但我的内部函数需要字符串我该如何有效地转换,我有一个问题...

截至目前,我只是在内部使用字符串,但出于兼容性原因,我使用char* c风格,以便给任何系统32或64它无所谓。这是准确的事情吗?还是我错了?

使用char* vs _int64是否存在问题?

+0

这个问题是没有意义的。为什么机器中的位数决定它是否可以使用正确的C++'字符串?你真的在问什么? – 2017-11-07 16:20:51

回答

8
#include <string> 
#include <sstream> 

int main() 
{ 
    std::stringstream stream; 
    __int64 value(1000000000); 
    stream << value;  
    std::string strValue(stream.str()); 
    return 0; 
} 
2

最好的选择是改变函数不再使用字符串,所以你可以按原样传递原始__int64。 __int64在32位和64位系统中的工作原理相同。

如果您必须转换为字符串,有几个选项。 Steve向你展示了如何使用stringstream,这是C++的方式。您也可以使用C的sprintf()或_i64toa()函数:

__int64 value = ...; 
char buffer[20]; 
sprintf(buffer, "%Ld", value); 

__int64 value = ...; 
char buffer[20]; 
_i64toa(value, buffer, 10); 
+0

我很喜欢char *,它是32位和64位下的基本单位。这是不是真的?只是好奇。另外在这种情况下,我从标准输入读取像argc和argv(它使用char *),这只是一种情况,更不用说现在有很多东西我可以在内部用std string类来完成。 – 2010-11-04 18:17:19

+0

作为一种数据类型,'char'在32位和64位中是相同的,但是对于char的*指针*是不同的(4字节对8字节),尽管它的语义(一个“ char'值)是相同的。 – 2010-11-05 03:05:02

1

C++ 11规范了std::to_string功能:

#include <string> 

int main() 
{ 
    int64_t value = 128; 
    std::string asString = std::to_string(value); 
    return 0; 
}