У меня есть двоичные данные в байтовой последовательности, описанной const unsigned char *p
и size_t len
.Я хочу иметь возможность передавать эти данные в функцию, которая ожидает std::istream *
.
. Я думаю, что я должен быть в состоянии сделать это без копирования данных, небезопасных приведений или написания нового класса потока.Но пока я терплю неудачу.Кто-нибудь может помочь?
Обновление
Спасибо всем за комментарии.Казалось бы, это вопрос без ответа, потому что std::istream
работает с char
, и преобразование в какой-то момент потребует по крайней мере целочисленного приведения из unsigned char
.
Прагматический подход заключается в следующем:
std::string s(reinterpret_cast<const char*>(p), len);
std::istringstream i(s);
и передайте &i
функции, ожидающей std::istream *
.