我不是C++专家,但之前已经几次序列化过东西。不幸的是,这一次我试图序列化一个包含 std::string
的类,这个类似乎就像序列化一个指针。
我可以把这个类写入文件并读回来。所有的 int
字段都没问题,但是 std::string
字段会出现“地址越界”的错误,可能是因为它指向的数据不再存在。
有没有标准的解决办法?我不想回到使用 char
数组,但至少我知道在这种情况下它们是有效的。如果需要,我可以提供代码,但我希望我已经清楚地解释了我的问题。
我通过将该类转换为 char*
并使用 std::fstream
将其写入文件来进行序列化。当然,读取也是反过来的。
writev
函数(http://linux.die.net/man/2/writev),以便一次性写入所有内容。 - RocketR