gpt4 book ai didi

c++ - 读写类对象到二进制文件

转载 作者:行者123 更新时间:2023-11-30 03:27:59 27 4
gpt4 key购买 nike

我想知道当我写的时候会发生什么:

object.write((char*)&class_object, sizeof(class_object));
// or
object.read((char*)&class_object, sizeof(class_object));

到目前为止,根据我的阅读,class_object 已转换为指针。但我不知道它是如何设法将对象携带的数据转换成二进制的。二进制实际上代表什么?

我是初学者。

编辑

你能解释一下当我们写上面这段代码时到底发生了什么吗?我的意思是,当我们写 (char*)*S 时实际发生了什么,说 S 是我声明的类的对象?

最佳答案

这样想象,如果将类转换为 char 指针,则类实例只是 RAM 中的一些内存块:

SomeClass someClassInstance;
char* data = reinterpret_cast<char*>(&someClassInstance);

它将指向您内存中的相同数据,但在您的程序中它将被视为字节数组。

如果你把它转换回来:

SomeClass* instance = reinterpret_cast<SomeClass*>(data);

它又会被当作类来对待。

因此,为了将您的类写入文件并稍后重建它,您只需将 data 写入某个文件,该文件的大小为 sizeof(SomeClass)然后读取文件并将原始字节转换为类实例。

但是,请记住,您只能在类(class)为 POD 时执行此操作(普通旧数据)!

关于c++ - 读写类对象到二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46948604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com