我有一个关于std :: string和google的协议缓冲区库的简单问题。 我已经定义了一个消息,像这样:使用协议缓冲区发送图标/小图像
message Source
{
required string Name = 1;
required uint32 Id = 2;
optional string ImplementationDLL = 3;
optional bytes Icon = 4;
}
我想使用的图标字段发送图像,这很可能将是一个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可能能够保存二进制数据,但怎么样?
这是非常低效的时间写出来一个字节。最好只写一次[`binFile.data()`](http://www.cplusplus.com/reference/string/string/data/)。 – poolie 2013-10-18 04:50:30