Я извлекаю некоторые двоичные данные из своей базы данных MySQL. Он выводится как тип mysqlpp :: sql_blob.Можно ли конвертировать mysqlpp :: sql_blob в std :: string?
Как раз так бывает, что этот BLOB является сериализованным Google Protobuf. Мне нужно де-сериализовать его, чтобы я мог нормально обращаться к нему.
Это дает ошибку компиляции, так как ParseFromString() не предназначена для mysqlpp: типы sql_blob:
protobuf.ParseFromString(record.data);
Однако, если я заставляю бросок, он компилирует OK:
protobuf.ParseFromString((std::string) record.data);
ли это безопасно? Я особенно волнуюсь из-за этого фрагмента из документации mysqlpp:
Спасибо за вашу помощь!
В основном, это зависит от того, как вы сериализовали protobuf. Если вы сериализовали его как двоичный, следите! Вы настраиваете себя на проблему по дороге. Но если вы используете функции google :: protobuf :: TextFormat :: PrintToString() и ParseFromString(), с вами все будет в порядке. – Runcible