2017-01-12 37 views
2

我閱讀了protobuf C++編程指南的教程,它似乎在其.h函數中提供了SerializeWithCachedSizeToArray,我也可以調用SerializeToString()SerializeToOstream()protobuf和Serialized Array/String/Ostream提供的其他目標類型

我想知道:

(1)是否PB爲cpp的代碼,其他默認序列化/反序列化的功能呢?

(2)如何使用的

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

我搜索谷歌,但沒有得到何時何地,我應該用CodedOutputStream生成的函數。

任何解釋?謝謝。

回答

2

1)必須完成三個主要操作才能序列化:a)計算總大小,b)編碼,c)轉儲。例如,SerializeWithCachedSizeToArray意味着a)使用緩存大小,並且c)轉儲到char數組。

取決於如何/在哪裏執行這些操作,有很多Serialize函數的變體,您可以混合/匹配庫提供的實用程序或您寫過的實用程序來創建其他類型。正如你所看到的,最常見的功能是'SerializeToString/Ostream'。有幾個字符串,char數組,ostream,zlibstream。

2)CodedOutputStream是對標記流進行編碼的工具類。標記 - 您在'='後放入原始數字。你用轉儲目標實例化它,比如流,字符數組等等......