protobuf 序列化和反序列化函数
时间: 2023-07-08 21:51:10 浏览: 140
protobufjs实现序列化与反序列化
在 C++ 中,protobuf 序列化和反序列化的函数分别是 SerializeToString 和 ParseFromString。
例如,假设我们有一个名为 MyMessage 的 protobuf 消息类型,我们可以使用以下方式进行序列化和反序列化:
```cpp
#include "mymessage.pb.h"
#include <iostream>
#include <string>
int main() {
// 创建一个 MyMessage 对象
MyMessage my_message;
my_message.set_id(123);
my_message.set_name("Hello, world!");
// 序列化为字符串
std::string serialized_message;
my_message.SerializeToString(&serialized_message);
// 反序列化为 MyMessage 对象
MyMessage deserialized_message;
deserialized_message.ParseFromString(serialized_message);
// 输出反序列化后的内容
std::cout << "ID: " << deserialized_message.id() << std::endl;
std::cout << "Name: " << deserialized_message.name() << std::endl;
return 0;
}
```
在上面的例子中,我们创建了一个 MyMessage 对象,设置了它的 id 和 name 字段,然后使用 SerializeToString 函数将其序列化为字符串。接着,我们使用 ParseFromString 函数将字符串反序列化为一个新的 MyMessage 对象,并输出了反序列化后的结果。
需要注意的是,protobuf 序列化和反序列化的函数都需要传入一个字符串作为参数,用于存储序列化或反序列化后的数据。在实际应用中,你可能需要将这些字符串存储到文件或网络中进行传输。
阅读全文