利用protobuf進行讀寫配置檔案

2021-09-22 02:15:47 字數 2596 閱讀 6834

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...