学堂 学堂 学堂公众号手机端

在C++中使用protobuf,首先需要定义一个.proto文件来描述消息的结构,然后使用protobuf的编译器生成对应的C++代码

lewis 2年前 (2023-11-12) 阅读数 6 #技术

在C++中使用protobuf,首先需要定义一个.proto文件来描述消息的结构,然后使用protobuf的编译器生成对应的C++代码。接着可以在C++程序中使用生成的代码来序列化和反序列化消息。

以下是一个简单的使用protobuf的示例:

  1. 定义一个.proto文件:
syntax="proto3"; messagePerson{ stringname=1; int32age=2; repeatedstringhobbies=3; }
  • 使用protobuf的编译器生成C++代码:
  • protoc--cpp_out=.person.proto
  • 在C++程序中使用生成的代码:
  • #include"person.pb.h" #include<fstream> intmain(){ Personperson; person.set_name("Alice"); person.set_age(30); person.add_hobbies("Reading"); person.add_hobbies("Swimming"); //序列化消息 std::fstreamoutput("person.pb",std::ios::out|std::ios::binary); person.SerializeToOstream(&output); //反序列化消息 Personnew_person; std::fstreaminput("person.pb",std::ios::in|std::ios::binary); new_person.ParseFromIstream(&input); //输出消息内容 std::cout<<"Name:"<<new_person.name()<<std::endl; std::cout<<"Age:"<<new_person.age()<<std::endl; for(constauto&hobby:new_person.hobbies()){ std::cout<<"Hobby:"<<hobby<<std::endl; } return0; }

    以上示例演示了如何使用protobuf在C++程序中序列化和反序列化消息,并访问消息的数据成员。在实际应用中,可以根据需要定义更复杂的消息结构,并使用更多protobuf提供的功能来处理消息。


    版权声明

    本文仅代表作者观点,不代表博信信息网立场。

    热门