Ist es sicher, einen mysqlpp :: sql_blob zu einem std :: string zu konvertieren?
-
20-09-2019 - |
Frage
Ich packte einige binäre Daten aus meiner MySQL-Datenbank. Es kommt heraus, als mysqlpp :: sql_blob Typ.
Es passiert einfach so, dass dieses BLOB ist eine serialisiert Google Protobuf. Ich muss Deserialisieren es so, dass ich es normalerweise zugreifen können.
Das gibt einen Compiler-Fehler, da ParseFromString () nicht für mysqlpp bestimmt: sql_blob Typen:
protobuf.ParseFromString( record.data );
Wenn ich jedoch die Besetzung zwingen, es kompiliert OK:
protobuf.ParseFromString( (std::string) record.data );
Ist das sicher? Ich bin vor allem wegen dieses Ausschnitts aus der Dokumentation mysqlpp besorgt:
Vielen Dank für Ihre Hilfe!
Lösung
Es sieht nicht so aus, wie es ein Problem mit diesem Zitat zu urteilen wäre (es ist im Grunde sagt, wenn ein Null-Zeichen in dem Blob gefunden wird, wird die Zeichenfolge dort anhalten, jedoch ASCII-Strings haben nicht zufällig Nullen in der Mitte von ihnen). Allerdings könnte dies ein Problem für die Internalisierung präsentieren (multibyte charsets nulls in der Mitte haben kann).