ポインターのアドレスを文字列として保存しようとしています。つまり、アドレスを構成するバイトの内容を char ベクトルに挿入したいと考えています。
これを行う最善の方法は何ですか?
64ビットシステムを含め、完全に移植可能な方法が必要です。
最も簡単な方法は、
char buf[sizeof(void*) * 2 + 3];
snprintf(buf, sizeof(buf), "%p", /* the address here */ );
std::string serialized (std::to_string ((intptr_t) ptr));
これを行う C++ の方法は、文字列ストリームを使用することです
#include <string>
#include <sstream>
int main()
{
MyType object;
std::stringstream ss;
std::string result;
ss << &object; // puts the formatted address of object into the stream
result = ss.str(); // gets the stream as a std::string
return 0;
}
void storeAddr(vector<string>& v,void *ptr)
{
stringstream s;
s << (void*)ptr ;
v.push_back(s.str());
}