我有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 *
的函数。
答案 0 :(得分:1)
你的答案仍在复制。
你考虑过这样的事吗?
const unsigned char *p;
size_t len;
std::istringstream str;
str.rdbuf()->pubsetbuf(
reinterpret_cast<char*>(const_cast<unsigned char*>(p)), len);