在协议缓冲区应用程序的实现过程中,我尝试使用文本pbtxt文件来简化编程。一旦我对API有了更清楚的了解,我的想法就是切换到pb二进制格式。 (我在C ++工作)
我通过使用TextFormat::Parse
导入文件使我的应用程序正常工作。 (该文件的内容来自TextFormat::Print
)。然后我生成了相应的二进制文件,我试图用myMessageVariable.ParsefromCodedStream
导入(文件未压缩)。但我注意到只导入了一小部分消息。 myMessageVariable.IsInitialized
返回true,因此我猜图书馆"认为"它已经完全导入了文件。
所以我的问题是:导入文件的方式有什么不同可以导致导入"半失败"? (除了明显的原因,一个是二进制,另一个是文本?)我们可以做些什么呢?
答案 0 :(得分:1)
在阅读文本数据和阅读二进制数据方面存在一些差异:
\r\n
与\n
),尤其是在Windows平台上。必须通过以二进制模式打开文件来禁用它。如果您可以确定更多有关解析消息的数量,这可能会有所帮助。然后,您可以查看问题点附近的字节类型,例如,十六进制编辑