我在提供API时遇到了一个问题
如果我要求他们给我一个_int64
10位十六进制数字,但我的函数内部采用字符串,我该如何有效地转换...
截至目前我只是在内部使用字符串,但出于兼容性原因,我使用char*
c样式,以便给任何系统32或64无关紧要。这是准确的事情吗?或者我错了?
使用char*
vs _int64
时出现问题?
答案 0 :(得分:9)
#include <string>
#include <sstream>
int main()
{
std::stringstream stream;
__int64 value(1000000000);
stream << value;
std::string strValue(stream.str());
return 0;
}
答案 1 :(得分:5)
C ++ 11标准化了std::to_string
函数:
#include <string>
int main()
{
int64_t value = 128;
std::string asString = std::to_string(value);
return 0;
}
答案 2 :(得分: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);