如何将字符串转换为打开以供读取的FILE*

Ser*_*rge -2 c c++

我正在编写一个C++应用程序,它需要调用一个期望FILE*打开读取的库函数.我没有该功能的代码 - 对我来说这是一个黑盒子.我需要传递给函数的数据在char*已知大小的缓冲区的内存中.理想情况下,我需要将一个缓冲区包装在一个FILE*结构中并传入它,但我需要所有通常FILE*用于工作的stdio函数来处理我传入的内容,因为我不知道它调用了哪个函数 -当然fread,也可能fseek.代码是一个对性能敏感的代码,所以我想避免将缓冲区写入磁盘,以便我可以FILE*通过它创建一个fopen.有没有办法FILE*让我的内存中的缓冲区允许?像stringstreamc ++中的东西?我的代码需要能够在Windows和Linux上运行.

我已经看到很多人试图写入FILE*内存的问题.我的情况恰恰相反 - 我需要将现有缓冲区呈现为可读的 FILE*.

非常感谢!

PS是的,使用像FILE*这样的C字符串正是我所要求的,不知道我以前找不到它......

不过,如果您可以在Windows上建议解决方案,那将非常有用!

ric*_*ici 5

Posix需要这个fmemopen()功能,它完全符合你的要求.

格利布肯定有它.

不能肯定地说Windows,但似乎MinGW包含newlib,它也实现了它.如果这有任何帮助.