使用协议缓冲区发送图标/小图像

Ahm*_*taq 4 c++ stl protocol-buffers

我有一个关于std :: string和google协议缓冲库的简单问题.我已经定义了这样的消息:

message Source
{
    required string Name = 1;
    required uint32 Id = 2;
    optional string ImplementationDLL = 3;
    optional bytes  Icon = 4;
}
Run Code Online (Sandbox Code Playgroud)

我想使用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();
Run Code Online (Sandbox Code Playgroud)

std :: string*mutable_icon()函数让我很头疼.它返回一个std :: string,但我相信字符串不能保存二进制数据!或者他们可以吗?

我可以使用set_icon(const void*,size_t)函数来放置二进制数据,但是我如何在另一端获取它?

我认为std :: string可能能够保存二进制数据,但是如何????

Dav*_*ble 5

const std::string s = icon();

const void *data=s.c_str();
Run Code Online (Sandbox Code Playgroud)