【发布时间】:2012-08-17 07:06:41
【问题描述】:
我很难理解序列化是什么以及做什么。
让我简化一下我的问题。我的 c/c++ 程序中有一个 struct info,我可以将这个 struct 数据存储到一个文件 save.bin 中,或者通过套接字将它发送到另一台计算机。
struct info {
std::string name;
int age;
};
void write_to_file()
{
info a = {"Steve", 10};
ofstream ofs("save.bin", ofstream::binary);
ofs.write((char *) &a, sizeof(a)); // am I doing it right?
ofs.close();
}
void write_to_sock()
{
// I don't know about socket api, but I assume write **a** to socket is similar to file, isn't it?
}
write_to_file 将简单地将struct info 对象a 保存到磁盘,使这些数据持久化,对吗?而且写到socket上也差不多吧?
在上面的代码中,我不认为我使用了数据序列化,但是数据a 无论如何都会在save.bin 中持久化,对吧?
问题
那么序列化的意义何在?我这里需要吗?如果是,我应该如何使用它?
我一直认为任何类型的文件,
.txt/.csv/.exe/...,在内存中都是01的位,这意味着它们自然具有二进制表示,所以我们不能简单地通过套接字直接发送这些文件吗?
非常感谢代码示例。
【问题讨论】:
-
没有用,如果客户端和服务器都由你维护。!!!!
-
@Anonymous,如果两者都不是我维护的?
-
你必须遵守标准,这就是序列化发挥作用的地方。
-
@Anonymous,你能用一些代码举例说明吗?
标签: c++ serialization