私はprotobufが初めてで、次の簡単な例を検討し始めました
message Entry {
required int32 id = 1;
}
C++ コードで使用
#include <iostream>
#include "example.pb.h"
int main() {
std::string mySerialized;
{
Entry myEntry;
std::cout << "Serialization succesfull "
<< myEntry.SerializeToString(&mySerialized) << std::endl;
std::cout << mySerialized.size() << std::endl;
}
Entry myEntry;
std::cout << "Deserialization successfull "
<< myEntry.ParseFromString(mySerialized) << std::endl;
}
「id」フィールドが必要な場合でも、設定されていないため、シリアライゼーション バッファのサイズは 0 (??) です。
メッセージを逆シリアル化すると、エラーが発生します。
[libprotobuf ERROR google/protobuf/message_lite.cc:123] Can't parse message of type "Entry" because it is missing required fields: id
それは正常な動作ですか?
フランチェスコ
ps-「id」を値0で初期化すると、動作が異なります
pps-SerializeToString
関数は true をParseFromString
返し、 は falseを返します