У меня простой вопрос о std :: string и библиотеке буферов протокола google.
Я определил сообщение так:
message Source
{
required string Name = 1;
required uint32 Id = 2;
optional string ImplementationDLL = 3;
optional bytes Icon = 4;
}
Я хочу использовать поле Icon для отправки изображения, скорее всего это будет изображение в формате png.
После передачи этого в компилятор protobuf я получил что-то вроде этого для доступа / манипулирования полем Icon.
inline bool has_icon() const;
inline void clear_icon();
static const int kIconFieldNumber = 4;
inline const ::std::string& icon() const;
inline void set_icon(const ::std::string& value);
inline void set_icon(const char* value);
inline void set_icon(const void* value, size_t size);
inline ::std::string* mutable_icon();
функция std :: string * mutable_icon () доставляет мне головную боль. Он возвращает std :: string, но я считаю, что строки не могут содержать двоичные данные! или они могут?
Я могу использовать функцию set_icon (const void *, size_t) для размещения двоичных данных, но как мне получить их на другой стороне?
Я думаю, что std :: string может содержать двоичные данные, но как ????