繁体   English   中英

如何在 C++ 中创建带有无符号字符数组的 streambuf

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM