读取 vector<char> 作为流

Nei*_*irk 3 c++ stl

我有一个 CONST 向量,但需要一个函数来读取它。问题是,该函数需要一个 istream。

将向量内的数据传递给此函数的最有效方法是什么?

我尝试了这种方法来防止复制流,但它不起作用,因为我的向量是常量,而 pubsetbuf 需要非常量字符 *。

istringstream is;
const vector<char>& data = GETDATA();
is.rdbuf()->pubsetbuf(&data[0], data.size());
Run Code Online (Sandbox Code Playgroud)

由于流是只读的,我可以转换指针。那安全吗?或者有什么更好的方法?

eca*_*mur 5

考虑使用Boost.Iostreams

#include <boost/iostreams/device/array.hpp>
#include <boost/iostreams/stream.hpp>

using namespace boost::iostreams;
stream<array_source> bs(data.data(), data.size());
std::istream &is = bs;
Run Code Online (Sandbox Code Playgroud)