gpt4 book ai didi

c++ - protobuf 抛出运行时错误,因为无法解析最新版本 3.0.0 中的地址簿?

转载 作者:行者123 更新时间:2023-11-28 01:56:24 25 4
gpt4 key购买 nike

我已经用它创建了一个 addressbook.proto,我很高兴生成以下两个文件

addressbook.pb.h
addressbook.pb.cc

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

我有一个代码可以读取我的地址簿名称 readproto.cc

读取协议(protocol).cc

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-config --cflags --libs protobuf

我得到的可执行文件没什么问题,但我怀疑我应该用这个可执行文件加载什么文件?

我很累

./a.out addressbook.proto   

不确定哪个文件需要加载addressbook.proto是好的??

result : Failed to parse address book

.

我是 protobuffer 的新手,需要帮助。从过去三天开始,这是我最后的希望,请帮助我,谢谢

最佳答案

由于您使用的是 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;
}
....

关于c++ - protobuf 抛出运行时错误,因为无法解析最新版本 3.0.0 中的地址簿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41047554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com