gpt4 book ai didi

c++ - 打印 Protobuf 消息时省略字段

转载 作者:行者123 更新时间:2023-11-30 02:36:29 25 4
gpt4 key购买 nike

是否可以选择在 Google Protobuf 中调用 message.DebugString() 时要考虑的字段或至少要考虑的字段类型?

我有以下消息描述:

message Message
{
optional string name = 1
optional int32 blockSize = 2;
optional bytes block = 3;
}

我只想打印 nameblockSize 并省略 block 字段,它恰好很大(例如:64KB)及其内容无关紧要。

我构建了一个方法,专门将感兴趣的字段添加到 std::stringstream,但似乎我必须为消息描述中的每个更改修改该方法。

最佳答案

最好的办法是制作一份邮件拷贝,从拷贝中清除 block ,然后打印它。

Message copy = original;
copy.clear_block();
cout << copy.DebugString() << endl;

请注意,这里没有性能问题,因为 DebugString() 本身已经比复制消息慢很多

如果你想让这个更通用,你可以写一些基于protobuf reflection的代码它遍历复制的消息并删除所有长度为 bytes 的字段。

关于c++ - 打印 Protobuf 消息时省略字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32639891/

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