1. hello.proto
message helloworld
{
required int32 id = 1;
required string str = 2;
optional int32 opt = 3;
}
#protoc --cpp_out=./ addressbook.proto
生成hello.pb.cc hello.pb.h
2.编写reader.cpp
#include "hello.pb.h"
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char* argv[]) {
helloworld msg1;
{
fstream input("./log", ios::in | ios::binary);
if (!msg1.ParseFromIstream(&input)) {
cerr << "Failed to parse address book." << endl;
return -1;
}
}
cout << msg1.DebugString().c_str() << endl;
}
3. 编写writer.cpp
#include "hello.pb.h"
#include <iostream>
#include <fstream>
using namespace std;
int main(void)
{
helloworld msg1;
msg1.set_id(101);
msg1.set_str("helloworld");
// Write the new address book back to disk.
fstream output("./log", ios::out | ios::trunc | ios::binary);
if (!msg1.SerializeToOstream(&output)) {
cerr << "Failed to write msg." << endl;
return -1;
}
return 0;
}
#g++ -g -o Writer helloworld.pb.cc writer.cpp -lprotobuf
生成writer.cc Writer
同理生成 reader.cc Reader
#./Reader
生成结果
101
helloworld