c++ - 如何在内存中的数据缓冲区上使用常规 std::basic_istream::read、std::basic_ostream::write?
问题描述
我有一个QByteArray
并且想像使用常规文本文件一样使用它。我怎样才能使用std::basic_istream::read
它上面的功能?
解决方案
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());
推荐阅读
- c - 这行代码在 C 编程中做了什么?
- python - 如何在不显示“\n”的情况下将响应保存为 csv?
- python - 在 Tkinter 树视图中添加小部件
- python - Matplotlib - 在图表中添加文本 - pyplot.text()
- python - 如何在 Python Azure 函数中传递不同的 HttpResponse?
- javascript - firebase 函数发布数据为空
- angular - NGRX - 如何修复“在您的 package-lock.json 中发现错误”?
- c++ - 如何列出静态库文件中的可用函数
- r - 如何使用 ggplot2 重新排序 geom_boxplot() 中显示的单元组?
- angular - 角度材料表中屏幕尺寸减小时如何支持相同的列尺寸