在 C++ 中,将
void*
转换为
string
通常需要确定
void*
指向了什么类型的数据。如果
void*
指向的是字符串(以 null 结尾的字符数组),则可以使用
static_cast<char*>(ptr)
将其转换为
char*
类型,然后再使用
std::string
构造函数将其转换为
string
类型:
void* ptr = "hello";
std::string str = static_cast<char*>(ptr);
如果 void*
指向的是其他类型的数据,例如整数或对象,那么需要根据实际情况将其转换为相应的字符串。可以使用 std::to_string
将整数转换为字符串,例如:
void* ptr = new int(123);
std::string str = std::to_string(*reinterpret_cast<int*>(ptr));
又或者,如果对于对象,我们希望对象自己提供转换为字符串的方法,可以在对象中实现 std::string toString()
方法,然后调用该方法将对象转换为字符串,例如:
class MyClass {
public:
std::string toString() const {
return "MyClass";
void* ptr = new MyClass();
std::string str = reinterpret_cast<MyClass*>(ptr)->toString();
需要注意的是,将 void*
直接转换为字符串是危险的,因为 void*
并不知道指向的具体类型,如果类型不匹配或者没有按正确的方式使用转换后的字符串,将可能导致意外的错误或内存泄漏。