Kenton, The generated code for a string field has setters for std::string and const char *, but do you think you could add a (const char *, int length) setter as well (like you have for bytes fields)? Right now in protobuf-perlxs, we have to construct a temporary std::string in order to set a string field's value from a Perl scalar, which it would be nice to avoid (a Perl scalar may include embedded '\0' characters) - see, for example:
http://code.google.com/p/protobuf-perlxs/issues/detail?id=4&can=1 -dave On Feb 25, 3:27 pm, Kenton Varda <ken...@google.com> wrote: > Good to know, thanks. > > On Wed, Feb 25, 2009 at 2:41 PM, marc <vaill...@cis.jhu.edu> wrote: > > > On Feb 25, 2:41 pm, Kenton Varda <ken...@google.com> wrote: > > > You may be right, but we've done it that way for many years, and it would > > be > > > too hard to change now. > > > Are there any known STL implementations that use simple null-terminated > > > strings? string::size() would have to be O(n) for them, which would be > > > unfortunate. > > > Thanks Kenton, > > > Further digging reveals that std::string is intended to be able to > > contain any char, including embedded nul chars, which would make a nul > > terminated implementation pretty much moot. > > So, I think it's safe to use them for binary data. > > > Below is a quote from the thread: > >http://www.experts-exchange.com/Programming/Languages/CPP/Q_21022457.... > > > 21.3 (String library) of the C++ standard clearly says: "For a char- > > like type charT, the class basic_string describes objetcs that can > > store a sequence consisting of a varing number of arbitrary char-like > > objects ... Such a sequence is also called a "string" if the given > > char-like type is clear from context. > > Restrictions are only made in 21.4 (Null-terminated sequence > > utilities) that deal with the cstring functions like strcat etc. > > > > On Wed, Feb 25, 2009 at 8:30 AM, marc <vaill...@cis.jhu.edu> wrote: > > > > > There's nothing in the standard that forbids the use of null as a > > > > terminator in internal implementations of std::string. Therefore it > > > > seems dangerous to use string as a container to store binary data, > > > > which certainly will contain null bytes. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to protobuf@googlegroups.com To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/protobuf?hl=en -~----------~----~----~----~------~----~------~--~---