3

我有由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 *

4

1 回答 1

1

你的答案还在抄袭。

你考虑过这样的事情吗?

const unsigned char *p;
size_t len;

std::istringstream str;
str.rdbuf()->pubsetbuf(
    reinterpret_cast<char*>(const_cast<unsigned char*>(p)), len);
于 2011-10-12T09:14:58.110 回答