-4

可能重复:
如何在 C++ 中将数字转换为字符串,反之亦然

在 C++ 中,如何将十六进制整数转换为原始十六进制十进制值的字符串表示形式?

假设我们有一个整数,其十六进制表示为a1a56(十进制等于662102),您想将其转换为字符串“662102”

你会如何解决这个问题?

ps:我建议一个功能解决方案作为答案,请随时将其击落(如果可能,以礼貌的方式)

4

4 回答 4

7

您可以使用字符串流:

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>

于 2012-10-12T02:31:20.840 回答
6

您可以从字符串流中以十六进制读取数字,并将其以十进制形式写回不同的字符串流:

int x;
istringstream iss("a1a56");
iss >> hex >> x;
ostringstream oss;
oss << x;
string s(oss.str());

链接到ideone。

于 2012-10-12T02:32:18.520 回答
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;
}
于 2012-10-12T02:50:06.807 回答
1
std::string HexDec2String(int hexIn) {
  char hexString[4*sizeof(int)+1];
  // returns decimal value of hex
  sprintf(hexString,"%i", hexIn); 
  return std::string(hexString);
}
于 2012-10-12T02:31:47.300 回答