重複の可能性:
C ++で数値を文字列に、またはその逆に変換する方法
C ++では、16進整数を元の16進の10進値の文字列表現にどのように変換しますか?
a1a56
16進表現が(10進数で等しい)である整数があり、662102
これを文字列「662102」に変換するとします。
これをどのように解決しますか?
ps:私は答えとして機能的な解決策を提案します、それを自由に撃ち落としてください(可能であれば丁寧な方法で)
重複の可能性:
C ++で数値を文字列に、またはその逆に変換する方法
C ++では、16進整数を元の16進の10進値の文字列表現にどのように変換しますか?
a1a56
16進表現が(10進数で等しい)である整数があり、662102
これを文字列「662102」に変換するとします。
これをどのように解決しますか?
ps:私は答えとして機能的な解決策を提案します、それを自由に撃ち落としてください(可能であれば丁寧な方法で)
文字列ストリームを使用できます。
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>
文字列ストリームから数値を16進数として読み取り、それを10進数として別の文字列ストリームに書き戻すことができます。
int x;
istringstream iss("a1a56");
iss >> hex >> x;
ostringstream oss;
oss << x;
string s(oss.str());
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;
}
std::string HexDec2String(int hexIn) {
char hexString[4*sizeof(int)+1];
// returns decimal value of hex
sprintf(hexString,"%i", hexIn);
return std::string(hexString);
}