我有一个指针或变量存储地址,如0xb72b218
现在我必须将此值存储到const char*
。我怎么能存储它。提前致谢。
我试过以下:
假设我有一个指针变量“ptr”,其中包含0xb72b218
值
ostringstream oss;
oss << ptr;
string buf = oss.str();
const char* value = buf.c_str();
但是任何人都知道简单的方法会更复杂。
答案 0 :(得分:2)
嗯......如果你真的想要字符串中某些东西的地址,那就行了:
#include <stdio.h>
#include <iostream>
int main(){
char buf[30];
void* ptr = /*your pointer here*/;
snprintf(buf,sizeof(buf),"%p",ptr);
std::cout << "pointer as string: " << buf << "\n";
std::cout << "pointer as value: " << ptr << "\n";
}
或者,如果你不喜欢魔术数字,并希望你的代码能够工作,即使256bit指针不再是特殊的,试试这个:
#include <limits> // for numeric_limits<T>
#include <stdint.h> // for intptr_t
#include <stdio.h> // for snprintf
#include <iostream>
int main(){
int i;
int* ptr = &i; // replace with your pointer
const int N = std::numeric_limits<intptr_t>::digits;
char buf[N+1]; // +1 for '\0' terminator
snprintf(buf,N,"%p",ptr);
std::cout << "pointer as string: " << buf << "\n";
std::cout << "pointer as value: " << static_cast<void*>(ptr) << "\n";
}
答案 1 :(得分:0)
好的,可能必须有一些额外的参数告诉函数实际传递的是什么类型的数据,但你可以这样做:
extern void afunc(const char *p, int type);
int value = 1234;
afunc((const char *)&value, TYPE_INT);
答案 2 :(得分:0)
你看过const_cast
了吗?它是一种在C ++中从变量中添加/删除常量的方法。看看here。