c++ - 直接使用c++流缓冲来解压
问题描述
我的用例是从磁盘读取压缩文件,逐步解压缩并使用生成的数据。
目前我正在将文件内容读取到我分配的临时缓冲区中,将解压 API 指向该缓冲区,等等。问题在于了解临时缓冲区在这种情况下是否真的有必要或有帮助。
在一个实验中,我打开了一个文本文件的流并调用了一次 get()。在调试器中,我可以看到流中的文件缓冲区已按预期包含文本流中的以下字符。(在 msvc 下我找到了它std::ifstream::_Filebuffer::_IGfirst
)
我正在寻找一种可移植的方式来访问我在调试器中看到的这个缓冲区,用它提供解压缩 API,然后继续读取文件。
我不明白为什么我应该将文件缓冲区复制到我的缓冲区(例如使用 read()),在这种特殊情况下,我会立即消耗缓冲区内容并继续前进。我一般不会质疑缓冲区 I/O 的优点。
编辑:我做了进一步的实验,如果 read() 的目标本身足够大,似乎内部流缓冲区不会被使用。显然我担心的情况并没有真正出现。
解决方案
推荐阅读
- wordpress - 如何使用插件更改整个主题的背景和文本颜色?
- javascript - Vue.js - 组件模板不使用 v-for 渲染
- python - 如何将图像添加到 Python 的 icalendar 中的事件?
- puppet - 用于安装和运行 apache2 或 httpd 的平台无关清单
- java - 非法的表达开始
- node.js - Express API 在我的 GET all 请求中返回不需要的“数据”部分
- typo3 - LTS 7 中“上边距”和“下边距”的 TYPO3 替换
- php - WP post__not_in 另一个查询不过滤
- google-cloud-firestore - Cloud Firestore:在不知道字段名称的情况下检查值是否存在
- postgresql - Postgresql 11.1:“运行安装后步骤时出现问题。安装可能无法正确完成。配置或权限错误。”