我从MySQL数据库中获取了一些二进制数据。它以mysqlpp :: sql_blob类型出现。
恰好这个BLOB是一个序列化的Google Protobuf。我需要对其进行反序列化,以便我可以正常访问它。
这会产生编译错误,因为ParseFromString()不适用于mysqlpp:sql_blob类型:
protobuf.ParseFromString( record.data );
但是,如果我强制演员,它编译好了:
protobuf.ParseFromString( (std::string) record.data );
这样安全吗?我特别担心因为mysqlpp文档中的这个片段:
感谢您的协助!
答案 0 :(得分:1)
看起来这个引用看起来不会是一个问题(它基本上说如果在blob中找到一个空字符,它会在那里停止字符串,但是ASCII字符串在中间不会有随机空值他们)。但是,这可能会给内部化带来问题(多字节字符集可能在中间有空值)。