首页 > 解决方案 > 如何在内存中的数据缓冲区上使用常规 std::basic_istream::read、std::basic_ostream::write?

问题描述

我有一个QByteArray并且想像使用常规文本文件一样使用它。我怎样才能使用std::basic_istream::read它上面的功能?

标签: c++qtfilebuffer

解决方案


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

如果您不关心性能,您还可以考虑将 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());

推荐阅读