有可能吗?(c ++)

Som*_*ser 1 c++ pointers

写字符串指针,删除指针,从字符串加载指针?

unw*_*ind 14

可以进行这些操作,但它们(可能)之后不会产生影响.

将指针写入字符串只会存储指针值,即指向对象的地址.这是一个或多或少恒定长度的字符串,如0x7f2b93c91780(在64位系统上).当然,这并不捕获任何实际对象的状态.

delete指针上使用时,指向的内存将返回给系统; 它不再是你的了.指针本身不会被删除,操作只会影响指向的内存.此外,当您使用delete它时,指针的值实际上不会更改.因此,如果您现在通过从存储在其他地方的字符串中读取它来重新加载它没有区别:它仍然指向您不再拥有的内存,因此在不调用未定义的行为的情况下无法读取或写入.

像PiotrLegnica建议的那样,您需要将整个对象序列化为字符串,然后从序列化版本重新创建对象(对其进行反序列化).


Cat*_*lus 7

这是可能的,但它不会做你认为它会做的事情.将整个对象保存为字符串称为序列化 - 如果需要,请参阅Boost.Serialization(或评论中建议的Protocol Buffers).