मैं नया हूँ Protobuf करने और मैं निम्नलिखित तुच्छ उदाहरण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;
}
यहां तक कि अगर "आईडी" क्षेत्र है आवश्यक है, क्योंकि यह सेट नहीं किया गया है, serialization बफर का आकार 0 (??) है।
जब मैं संदेश deserialize एक त्रुटि होती है:
[libprotobuf ERROR google/protobuf/message_lite.cc:123] Can't parse message of type "Entry" because it is missing required fields: id
यह एक सामान्य व्यवहार है?
फ्रांसेस्को
ps- अगर मैं 0 मान "आईडी" प्रारंभ, व्यवहार अलग है
pps- SerializeToString
समारोह सच देता है, ParseFromString
रिटर्न झूठी
उन तरीकों से वापस आने वाले मान नहीं हैं जो आपको बताते हैं कि यह काम करता है या नहीं? क्या आप उन्हें जांच रहे हैं? –
ध्यान दें कि शून्य लंबाई बफर प्रोटोबफ में पूरी तरह से मान्य है - यदि आप क्रमबद्ध करने के लिए कोई फ़ील्ड नहीं हैं तो यह आपको मिलता है –