我需要在一个文件中写入多个protobuf消息。
我看到了有关writeDelimitedFrom and parseDelimitedFrom in C++的帖子,并且想知道使用它(或类似的东西,另一种定界样式)还是只包含我需要乘写的消息的“超级消息”更好?作为重复属性。
syntax = "proto2";
package test;
message myMessage {
required int32 TimeStamp = 1;
}
message Container {
repeated myMessage messages = 1;
}
在具有读/写DelimitedFrom的文件中写入多个myMessage
或与重复的Container
一起写入一个messages
更有趣吗?
我认为使用读/写DelimitedFrom更为优化(因为我只能附加最后一条消息),但是使用重复属性更容易,但是对于SerializeToOstream
,我认为我必须传递整个Container
。 br />
我认为不可能序列化消息的一部分以将其附加到输出文件,就像我从未见过的那样,但是我可能是错的
答案 0 :(得分:0)
像您一样难过,这两种选择都是可能的。
在很少的myMessages情况下,容器是简单的解决方案。这是因为您无需编写代码即可在回读文件时挑选出各个消息。
是的,您必须通过整个容器。这就是myMessages数量起作用的地方。如果数量很多,最好一次将它们序列化一个myMessage。将其附加到文件,并可能将其刷新到磁盘。