You can discard data in const char* and then use the std::string iterator constructor.
const char* sdata = static_cast<const char*>(data); std::string message(sdata, sdata + size);
Please note: all you need is a byte buffer, it can be simpler and more understandable to use std::vector<unsigned char> .
const unsigned char* sdata = static_cast<const unsigned char*>(data); std::vector<unsigned char> message(sdata, sdata + size);
source share