我正在编写一个C ++应用程序,它需要调用一个期望FILE*
打开读取的库函数。我没有该功能的代码 - 对我来说这是一个黑盒子。
我需要传递给函数的数据在已知大小的char*
缓冲区的内存中。理想情况下,我需要将我的缓冲区包装在FILE*
结构中并传入,但我需要所有通常在FILE*
上工作的stdio函数来处理我传入的内容,因为我不知道我不知道它调用哪些函数 - 绝对是fread
,也可能是fseek
。
代码对性能非常敏感,因此我想避免将缓冲区写入磁盘,以便我可以通过FILE*
从中创建fopen
。有没有办法让我的缓冲区允许FILE*
在内存中?
像c ++中的stringstream
之类的东西?
我的代码需要能够在Windows和Linux上运行。
我见过很多人试图通过FILE*
写入记忆的问题。我的情况恰恰相反 - 我需要将现有缓冲区显示为可读 FILE*
。
非常感谢!
P.S。是的,Using a C string like a FILE*正是我所要求的,不知道我以前找不到它......
但是,如果您可以在Windows上建议解决方案,那将非常有用!
答案 0 :(得分:5)
Posix需要fmemopen()
功能,这完全符合您的要求。
Glibc certainly has it。
不能肯定地说Windows,但MinGW似乎包含了newlib,它也实现了它。如果有任何帮助。