2016-12-08 3 views
1

У меня есть создать addressbook.proto с этим им благо, чтобы произвести ниже двух файловОшибка выполнения protobuffer throw, так как не удалось проанализировать адресную книгу в последней текущей версии 3.0.0?

addressbook.pb.h 
addressbook.pb.cc 

с protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/addressbook.proto

У меня есть код, который прочитал мою адресную книгу имя readproto.cc

readproto. куб.см

int main(int argc, char* argv[]) { 
if (argc != 2) { 
    cerr << "Usage: " << argv[0] << " ADDRESS_BOOK_FILE" << endl; 
    return -1; 
    } 


tutorial::AddressBook address_book; 

    { 
    // 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; 
    } 
    } 

---- 
} 

и я компилировать, как

C++ readproto.cc addressbook.pb.cc `PKG-конфигурация --cflags --libs Protobuf

я получаю исполняемый файл ничего плохого, но мои сомнения, что файл я должен загрузить с этим исполняемым файлом?

я устал, как

./a.out addressbook.proto 

Не уверен, какой файл нужно загрузить addressbook.proto хорошо ??

result : Failed to parse address book 

.

Я новичок с protobuffer нужна помощь на его .Struggling из последних трех дней это моя последняя надежда PLSS помощь с в этом спасибо

ответ

1

Поскольку вы используете protobuf tutorial, вызовите программу, как это:

./a.out my_adress_book.bin 

Это создаст пустой my_adress_book.bin, а затем предложит вам добавить записи.

Эта часть создает пустой файл:

fstream input(argv[1], ios::in | ios::binary); 
if (!input) { 
    cout << argv[1] << ": File not found. Creating a new file." << endl; 
} 
.... 
+0

У меня уже есть код ниже пути от того, где я реализую https://developers.google.com/protocol-buffers/docs/cpptutorial Можете ли вы рассказать об этом по этой ссылке, какой мне нужен чтобы принять за аргумент? – user7953556

+0

см. https://developers.google.com/protocol-buffers/docs/cpptutorial#writing-a-message. Вы запустите свою программу следующим образом: ./a.out my_adress_book.bin – HughB

+0

Thank вы его работающий хороший последний вопрос, когда my_addres_book.bin сгенерирован? – user7953556

0

Вы должны указать фактические двоичные данные. Формат данных определяется в файле .proto. Сначала попробуйте экспортировать данные в файл. А потом прочитайте.

+0

Можете ли вы показать мне, например, не в состоянии поймать слово, пожалуйста? – user7953556

+0

файла потока ("./ serial.data"); address_book.SerializeToOstream (&file); – JazzSoft