我有一个关于 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 可能能够保存二进制数据,但是如何 ????