作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 C++ 应用程序,它需要调用一个需要 FILE*
的库函数。打开阅读。我没有该功能的代码 - 对我来说它是一个黑匣子。我需要传递给函数的数据位于 char*
的内存中已知大小的缓冲区。理想情况下,我需要将缓冲区包装在 FILE*
中结构并传递它,但我需要通常在 FILE*
上工作的所有 stdio 函数处理我传入的内容,因为我不知道它调用了哪个函数 - 绝对 fread
,可能fseek
也。该代码对性能相当敏感,因此我想避免将缓冲区写入磁盘,以便我可以创建 FILE*
来自fopen
。有没有办法制作FILE*
这将允许我在内存中的缓冲区?类似 stringstream
在c++中?我的代码需要能够在 Windows 和 Linux 上运行。
我见过很多问题,人们试图通过 FILE*
来写内存。我的情况恰恰相反 - 我需要将现有缓冲区呈现为可读 FILE*
.
非常感谢!
附注是的,Using a C string like a FILE*正是我要问的,不知何故我找不到它......
不过,如果您可以建议 Windows 上的解决方案,那将非常有帮助!
最佳答案
Posix 需要 fmemopen()
函数,它完全符合您的要求。
Glibc certainly has it .
不能确定 Windows 的情况,但看来 MinGW 包含 newlib,它也实现了它。如果有帮助的话。
关于c++ - 如何将字符串转换为打开以供读取的 FILE*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49268228/
我是一名优秀的程序员,十分优秀!