-4

重複の可能性:
C ++で数値を文字列に、またはその逆に変換する方法

C ++では、16進整数を元の16進の10進値の文字列表現にどのように変換しますか?

a1a5616進表現が(10進数で等しい)である整数があり、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

文字列ストリームから数値を16進数として読み取り、それを10進数として別の文字列ストリームに書き戻すことができます。

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 に答える