将无符号char*转换为std::istream*C++

converting unsigned char* to std::istream* C++

本文关键字:istream C++ std 转换 无符号 char      更新时间:2023-10-16

我必须将二进制数据(无符号char*(传递给函数PerformRequest,该函数将std::istream作为参数。什么是最好的

unsigned char* data // has the binary data
PerformRequest(std::istream* in)
{
//some implementation
}

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

#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);
}