c++ void* 转string

在 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* 并不知道指向的具体类型,如果类型不匹配或者没有按正确的方式使用转换后的字符串,将可能导致意外的错误或内存泄漏。

  •