首页 > 解决方案 > 将 unsigned char* 转换为 std::istream* C++

问题描述

我必须将二进制数据(无符号字符 *)传递给以 std::istream 作为参数的函数 PerformRequest。哪个最好

unsigned char* data // has the binary data

PerformRequest(std::istream* in)
{
    //some implementation
}

标签: c++

解决方案


您可以使用std::stringstreamfrom <sstream>,它同时支持istreamostream接口。因此,您可以通过 -interface 写入数据ostream,然后将其作为istream-argument 传递:

#include <sstream>
#include <iomanip>
#include <iostream>

void prints(istream &is) {
    unsigned char c;
    while (is >> c) {
        std::cout << "0x" << std::hex << (unsigned int)c << std::endl;
    }
}

int main()
{
    unsigned char x[6] = { 0x2, 0x10, 0xff, 0x0, 0x5, 0x8 };
    std::stringstream xReadWrite;
    xReadWrite.write((const char*)x, 6);
    prints(xReadWrite);
}

推荐阅读