2017-01-12 2 views
2

Я прочитал руководство по программированию программирования protobuf C++, и он, кажется, обеспечивает SerializeWithCachedSizeToArray внутри его функции .h, и я также могу позвонитьи SerializeToOstream().Другие целевые типы, предоставляемые protobuf и Serialized Array/String/Ostream

Я хотел бы знать:

(1) Имеет ли рь обеспечивать другие функции по умолчанию сериализации/десериализации для CPP кода?

(2) Как использовать сгенерированный функцию

void SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output 

Я искал Google, но не получить, когда и где я должен использовать CodedOutputStream.

Любые объяснения? Благодарю.

ответ

2

1) Для сериализации необходимо выполнить три основные операции: a) рассчитать общий размер, b) закодировать и c) сбросить. Например, SerializeWithCachedSizeToArray подразумевает, что: a) использовать кешированный размер и c) дамп для char Array.

В зависимости от того, как и где выполнять эти операции, существует множество вариантов функции Serialize, и вы можете смешивать/сопоставлять предоставленную библиотекой утилиту или какую-либо полезную утилиту для создания других типов. Наиболее общей функцией будет «SerializeToString/Ostream», как вы можете видеть. Есть строки, char array, ostream, zlibstream, чтобы назвать несколько.

2) CodedOutputStream - это класс утилиты для кодирования помеченного потока. Тег - номер, который вы положили в proto после '='. Вы создаете экземпляр с целью создания дампа, например, поток, массив символов и т. Д.

Смежные вопросы