Ich habe eine einfache Frage zu std :: string und googles Protokollpufferbibliothek. ich eine Nachricht wie so definiert habe:Protokollpuffer zum Senden von Symbolen/kleinen Bildern verwenden
message Source
{
required string Name = 1;
required uint32 Id = 2;
optional string ImplementationDLL = 3;
optional bytes Icon = 4;
}
Ich mag das Feld Symbol verwenden, um ein Bild zu senden, ist es sehr wahrscheinlich ein PNG-Bild sein. Nachdem ich dies dem Protobuf-Compiler zugeführt hatte, bekam ich so etwas, um auf das Icon-Feld zuzugreifen/es zu manipulieren.
Die Funktion std :: string * mutable_icon() gibt mir Kopfschmerzen. Es gibt eine std :: string zurück, aber ich glaube, Zeichenfolgen können keine binären Daten enthalten! oder können sie?
ich kann set_icon (const void *, size_t) -Funktion verwenden, um binäre Daten zu setzen, aber dann, wie bekomme ich es auf der anderen Seite?
ich denke, std :: string könnte binäre Daten halten, aber wie ????
Das ziemlich ineffizient ist es zu einem Zeitpunkt ein Byte zu schreiben. Besser, einfach ['binFile.data()'] (http://www.cplusplus.com/reference/string/string/data/) auf einmal zu schreiben. – poolie