它是安全的一个mysqlpp :: sql_blob转换为std :: string?
-
20-09-2019 - |
题
我抓住一些二进制数据从我的MySQL数据库。它出来作为mysqlpp :: sql_blob类型。
它只是恰巧,这BLOB是一个序列化的谷歌的Protobuf。我需要反序列化它,这样我可以正常访问它。
这给出了一个编译错误,因为ParseFromString()不旨在用于mysqlpp:sql_blob类型:
protobuf.ParseFromString( record.data );
然而,如果我强制投,它编译确定:
protobuf.ParseFromString( (std::string) record.data );
这安全吗?我因为来自mysqlpp文档此代码段的特别担心:
感谢您的帮助!
解决方案
它看起来并不像它会通过引用判断问题(它基本上是说,如果一个空字符的BLOB发现它会停止串在那里,但是ASCII字符串不会有随机零点在中间他们的)。然而,这可能出现一个问题,内化(多字节字符集可以具有在中间的空值)。
不隶属于 StackOverflow