如何在内存中的数据缓冲区上使用常规 std::basic_istream::read、std::basic_ostream::write?

How to use regular std::basic_istream::read, std::basic_ostream::write on a buffer of data in memory?

我有一个 QByteArray 并且想像使用普通文本文件一样使用它。我怎样才能在上面使用像 std::basic_istream::read 这样的函数?

QByteArray 数据类型接近容器,而不是流。你不能像处理文本文件一样处理它,除非你继承 std::streambuf class 在内部处理 QByteArray。

如果不在意性能,也可以考虑将std::stringstream转为QByteArray,

std::stringstream ss;
// write to ss ...
.
.
QByteArray qdata = QByteArray::fromStdString(ss.str());

读操作,

QByteArray qdata; // consider qdata is already filled with data.
std::stringstream ss(qdata.toStdString());