针对proto2
protobuf 常用的接口
bool IsInitialized() const: // 确认required字段是否被设置
string DebugString() const: // 返回消息的可读表示,用于调试
void CopyFrom(const Person& from): // 使用给定消息值copy
void Clear(): // 清除所有元素为空状态
bool SerializeToString(string* output) const: // 序列化消息,将存储字节的以string方式输出。注意字节是二进制,而非文本;
bool ParseFromString(const string& data): // 解析给定的string
bool SerializeToOstream(ostream* output) const: // 写消息给定的c++ ostream中
bool ParseFromIstream(istream* input): // 从给定的c++ istream中解析出消息
- 一般的get函数的接口跟你的列名一样即get函数 fieldnum,并且返回的是const 类型
- set函数的接口的是set_fieldnum, 主要针对内置类型,简单类型;复合/嵌套消息不可以
- mutable_fieldnum 该函数返回指向该字段的一个指针。同时将该字段置为被设置状态。
若该对象存在,则直接返回该对象,若不存在则新new 一个,可以用局部的
- Protobuf 只要fieldnum 不改,即使该列的类型名更改也不影响兼容,老代码同样能兼容新pb文件
- 对内置类型数据的赋值, 使用set_xx()
- set_allocated_xx, 需要先是new 一个对应的指针变量,再用指针给复合类型初始化,这里保存的是对象的指针, 不能用局部的