Search code examples
c++ice

Conversion from string to Ice::ByteSeq


I gotta question about Ice in C++. One of my methods requires that I pass in a Ice::ByteSeq. I would like to build this ByteSeq from a string. How is this conversion possible?

I tried the options below.

Ice::ByteSeq("bytes")        // Invalid conversion to unsigned int
Ice::ByteSeq((byte*)"bytes") // Invalid conversion from byte* to unsigned int
(Ice::ByteSeq)"bytes"        // Invalid conversion from const char& to unsigned int
(Ice::ByteSeq)(unsigned int)atoi("bytes") // Blank (obviously, why did I try this?)

How can I make this happen?

EDIT

"bytes" is a placeholder value. My actualy string is non-numeric text information.


Solution

  • Looking at the header, ByteSeq is an alias for vector<Byte>. You can initialise that from a std::string in the usual way

    std::string s = "whatever";
    Ice::ByteSeq bs(s.begin(), s.end());
    

    or from a string literal with a bit more flappery, such as

    template <size_t N>
    Ice::ByteSeq byteseq_from_literal(char (&s)[N]) {
        return Ice::ByteSeq(s, s+N-1); // assuming you don't want to include the terminator
    }
    
    Ice::ByteSeq bs = byteseq_from_literal("whatever");