1、編寫protobuf 的proto檔案
在程式中經常會用配置檔案,而利用protobuf可以很方便的進行配置檔案的讀寫。
先編寫好protobuf的proto檔案
syntax =
"proto3"
;package msgtype;
enum enumtest
message prototestsub
message prototest
2、生成相對應的原始檔root@root:/root/protobuf# protoc --cpp_out=./ ./test.proto.proto
root@root:/root/protobuf# ls
a.out include mybuild protobuf_main.cpp test.pb.cc test.pb.h test.proto
3、示例程式(讀寫配置檔案)#include
#include
#include
#include
"test.pb.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
intmain
(void
) file_proto_test1 << str_proto_test1;
file_proto_test1.
flush()
; file_proto_test1.
close()
;system
("cat file_proto_test1.cfg");
//2、從配置檔案中讀取資料
int fd =
open
("file_proto_test1.cfg"
, o_rdonly);if
(fd <0)
google:
:protobuf:
:io:
:fileinputstream fileinput
(fd)
; fileinput.
setcloseondelete
(true)
; msgtype:
: prototest cls_proto_test2;
; google:
:protobuf:
:textformat:
:parse
(&fileinput,
&cls_proto_test2)
;//protobuf除錯列印函式 列印成字串
cls_proto_test2.
printdebugstring()
; msgtype:
: prototestsub cls_temp ;
for(
int i =
0;i < cls_proto_test2.
sub_test_size()
;i++
)while(1
)return0;
}
4、執行結果root@ubuntu:/wan/protobuf# ./a.out
int32_test: 123
str_test: "wanxuexiang"
dou_test: 56.023
dou_test: 78.023
sub_test
sub_test
int32_test: 123
str_test: "wanxuexiang"
dou_test: 56.023
dou_test: 78.023
sub_test
sub_test
int32_test: 123
str_test: "wanxuexiang"
dou_test: 56.023
dou_test: 78.023
sub_test
sub_test
test1: 12
test2: "zxcvbnm"
test1: 34
test2: "asdfghjkl"
^croot@ubuntu:/wan/protobuf# ls
a.out file_proto_test1.cfg include mybuild protobuf_main.cpp test.pb.cc test.pb.h test.proto
root@ubuntu:/wan/protobuf# cat file_proto_test1.cfg
int32_test: 123
str_test: "wanxuexiang"
dou_test: 56.023
dou_test: 78.023
sub_test
sub_test
PHP讀寫protobuf3示例
在proto3中,可以直接使用protoc命令生成php 生成的php 不能直接使用,還需要 protobuf 的php庫 支援。下面通過乙個例子演示下php怎麼使用protobuf。首先定義proto檔案 syntax proto3 package lm message helloworld 注意...
利用序列化進行檔案讀寫
在很多應用中我們需要對資料進行儲存,或是從介質上讀取資料,這就涉及到檔案的操作。我們可以利用各種檔案訪問方法完成這些工作,但mfc中也提供了一種讀寫檔案的簡單方法 序列化 序列化機制通過更高層次的介面功能向開發者提供了更利於使用和透明於位元組流的檔案操縱方法,舉乙個例來講你可以將乙個字串寫入檔案而不...
go實踐十六 使用protobuf讀寫檔案
最近的專案中,一直使用json做資料傳輸。json用起來的確很方便。但相對於protobuf資料量更大些。做乙個移動端應用,為使用者省點流量還是很有必要的。正好也可以學習一下protobuf的使用 跟json相比protobuf效能更高,更加規範 但也失去了一些便利性 protobuf github...