提供API转换_int64为字符串
当我问他们给我一个_int64
10位十六进制数字,但我的内部函数需要字符串我该如何有效地转换,我有一个问题...
截至目前,我只是在内部使用字符串,但出于兼容性原因,我使用char*
c风格,以便给任何系统32或64它无所谓。这是准确的事情吗?还是我错了?
使用char*
vs _int64
是否存在问题?
提供API转换_int64为字符串
当我问他们给我一个_int64
10位十六进制数字,但我的内部函数需要字符串我该如何有效地转换,我有一个问题...
截至目前,我只是在内部使用字符串,但出于兼容性原因,我使用char*
c风格,以便给任何系统32或64它无所谓。这是准确的事情吗?还是我错了?
使用char*
vs _int64
是否存在问题?
#include <string>
#include <sstream>
int main()
{
std::stringstream stream;
__int64 value(1000000000);
stream << value;
std::string strValue(stream.str());
return 0;
}
最好的选择是改变函数不再使用字符串,所以你可以按原样传递原始__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);
我很喜欢char *,它是32位和64位下的基本单位。这是不是真的?只是好奇。另外在这种情况下,我从标准输入读取像argc和argv(它使用char *),这只是一种情况,更不用说现在有很多东西我可以在内部用std string类来完成。 – 2010-11-04 18:17:19
作为一种数据类型,'char'在32位和64位中是相同的,但是对于char的*指针*是不同的(4字节对8字节),尽管它的语义(一个“ char'值)是相同的。 – 2010-11-05 03:05:02
C++ 11规范了std::to_string
功能:
#include <string>
int main()
{
int64_t value = 128;
std::string asString = std::to_string(value);
return 0;
}
这个问题是没有意义的。为什么机器中的位数决定它是否可以使用正确的C++'字符串?你真的在问什么? – 2017-11-07 16:20:51