protobuf 中 SerializeToOstream 的序列化功能列子
时间: 2023-09-23 22:11:32 浏览: 50
好的,我知道了。下面是一个简单的示例,展示了使用protobuf中SerializeToOstream的序列化功能:
首先,我们需要定义一个protobuf消息类型,例如:
```
message Person {
string name = 1;
int32 age = 2;
repeated string hobbies = 3;
}
```
接下来,在我们的代码中,我们需要通过该消息类型创建一个Person对象,并将其填充内容。
```
Person person;
person.set_name("John");
person.set_age(30);
person.add_hobbies("reading");
person.add_hobbies("swimming");
```
现在,我们可以将该对象序列化到一个输出流中,例如:
```
std::ofstream ofs("person.pb", std::ios::binary);
person.SerializeToOstream(&ofs);
```
其中,第二行代码将Person对象序列化,并将其写入文件“person.pb”中。需要注意的是,我们需要以二进制模式打开该文件。
最后,我们可以从该文件中读取数据并反序列化为Person对象:
```
Person loaded_person;
std::ifstream ifs("person.pb", std::ios::binary);
loaded_person.ParseFromIstream(&ifs);
```
这样,我们就可以在程序中使用已经从文件中反序列化出来的Person对象了。