c++ - How to feed binary hex literal into std::istream? -
i have method deserialize
taking reference opened std::istream
pass in std::ifstream
opened std::ios::binary
option.
now test binary (hex) literals not know how feed data std::istream
.
i tried similar in answer
struct membuf : std::streambuf { membuf(char* begin, char* end) { this->setg(begin, begin, end); } }; int main() { char buffer[] = "0a0b0c0d000000480000000000420410000"; membuf sbuf(buffer, buffer + sizeof(buffer) - 1); std::istream in(&sbuf); deserialize(in); }
which fails because data not read/fed binary.
how can it?
you don't have binary data in buffer
, characters. have plain c-style character literal.
to feed input binary data need declaration this:
unsigned char buffer[] = { 0x0a, 0x0b, 0x0c, 0x0d, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x04, 0x10, 0x00, 0x00 };
Comments
Post a Comment