将mysqlpp::sql\u blob转换为std::string安全吗?

将mysqlpp::sql\u blob转换为std::string安全吗?,blob,protocol-buffers,binary-data,mysqlpp,Blob,Protocol Buffers,Binary Data,Mysqlpp,我正在从MySQL数据库中获取一些二进制数据。它以mysqlpp::sql\u blob类型出现 碰巧这个BLOB是一个序列化的googleprotobuf。我需要反序列化它,以便我可以正常访问它 这会导致编译错误,因为ParseFromString()不适用于mysqlpp:sql\u blob类型: protobuf.ParseFromString( record.data ); 但是,如果强制强制强制转换,则编译为OK: protobuf.ParseFromString( (std::s

我正在从MySQL数据库中获取一些二进制数据。它以mysqlpp::sql\u blob类型出现

碰巧这个BLOB是一个序列化的googleprotobuf。我需要反序列化它,以便我可以正常访问它

这会导致编译错误,因为ParseFromString()不适用于mysqlpp:sql\u blob类型:

protobuf.ParseFromString( record.data );
但是,如果强制强制强制转换,则编译为OK:

protobuf.ParseFromString( (std::string) record.data );
这安全吗?我特别担心mysqlpp文档中的这段代码:


谢谢你的帮助

>P>这似乎不是一个问题,根据这句话来判断(基本上说,如果在BLUB中找到一个空字符,它将停止那里的字符串,但是ASCII字符串在它们中间不会有随机的空值)。但是,这可能会给内部化带来问题(多字节字符集的中间可能有null)。

基本上,这取决于如何序列化protobuf。如果将其序列化为二进制文件,请小心!你是在为将来的问题做准备。但是如果您使用google::protobuf::TextFormat::PrintToString()和ParseFromString()函数,您就不会有问题了。