Protobuf C+serialize 에서 char*까지 의 실현 방법 분석

protobuf 의 데모 프로그램 은?
C++버 전의 protubuf 는 몇 가지 serialize 와 unSerialize 방법 이 있 습 니 다.
방법 1:
공식 demo 프로그램 은

 // Write the new address book back to disk.

    fstream output(argv[1], ios::out | ios::trunc | ios::binary);

    if (!address_book.SerializeToOstream(&output)) {

      cerr << "Failed to write address book." << endl;

      return -1;

    }

 

 // Read the existing address book.

    fstream input(argv[1], ios::in | ios::binary);

    if (!input) {

      cout << argv[1] << ": File not found.  Creating a new file." << endl;

    } else if (!address_book.ParseFromIstream(&input)) {

      cerr << "Failed to parse address book." << endl;

      return -1;

    }

위 에서 fstream 을 사용 하여 데이터 시퀀스(반 시퀀스)를 디스크 파일 에 기록 합 니 다.
 
char*로 정렬 하고 socket 을 통 해 전송 하려 면 다음 을 사용 할 수 있 습 니 다.
방법 2:

int size = address_book.ByteSize();

void *buffer = malloc(size);

address_book.SerializeToArray(buffer, size);

방법 3:

ostringstream ,

std::ostringstream stream;

address_book.SerializeToOstream(&stream);

string text = stream.str();

char* ctext = string.c_str();

좋은 웹페이지 즐겨찾기