私は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はバイナリデータを保持することができると思いますが、どうやって????
一度に1つのバイトをそれを書くのはかなり非効率的です。一度に['binFile.data()'](http://www.cplusplus.com/reference/string/string/data/)を書く方が良いでしょう。 – poolie