将_int64转换为字符串

时间:2010-11-04 17:32:24

标签: c++

我在提供API时遇到了一个问题

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

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

使用char* vs _int64时出现问题?

3 个答案:

答案 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);