E 'sicuro per convertire un mysqlpp :: sql_blob ad uno std :: string?
-
20-09-2019 - |
Domanda
Sto prendendo alcuni dati binari fuori dal mio database MySQL. Ne viene fuori come un tipo mysqlpp :: sql_blob.
Si dà il caso che questo è un BLOB serializzato Google Protobuf. Ho bisogno di de-serializzare in modo che io possa accedere normalmente.
Questo dà un errore di compilazione, in quanto ParseFromString () non è destinato mysqlpp: tipi sql_blob:
protobuf.ParseFromString( record.data );
Tuttavia, se forzo il cast, si compila OK:
protobuf.ParseFromString( (std::string) record.data );
Questa funzione è sicura? Sono particolarmente preoccupato a causa di questo frammento dalla documentazione mysqlpp:
Grazie per il vostro aiuto!
Soluzione
E non sembra che sarebbe stato un problema a giudicare da quella citazione (è fondamentalmente dicendo che se un carattere null si trova nel blob si fermerà la stringa lì, però stringhe ASCII non avranno i null casuali nel mezzo di loro). Tuttavia, questo potrebbe rappresentare un problema per l'internalizzazione (set di caratteri multibyte possono avere valori nulli nel mezzo).