[英]How to create streambuf with array of unsigned char in C++
我想创建一个带有 stream 缓冲区 object 的std::istream object ,它可以从无符号字符数组中获取原始字节数据。 我搜索并找到了这个链接
但是,他们基于数组 char 创建了 stream 缓冲区:
struct membuf : std::streambuf
{
membuf(char* begin, char* end) {
this->setg(begin, begin, end);
}
};
我考虑过类型种姓,但我不想修改原始数据。那么我如何使用 unsigned char 来完成它。
使用std::istream
您不能显式使用unsigned char
,因为它是std::basic_istream<char>
docs的 typedef。 您可以将缓冲区指针转换为char*
this->setg(reinterpret_cast<char*>(begin), reinterpret_cast<char*>(begin), reinterpret_cast<char*>(end));
请注意,将大于CHAR_MAX
的值转换为char
是实现定义的(当然,只有当您实际将此值用作char
时)。
或者您可以尝试使用std::basic_istream<unsigned char>
(虽然我没有尝试过)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.