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

时间:2018-03-14 00:57:27

标签: c++ c

我正在编写一个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上建议解决方案,那将非常有用!

1 个答案:

答案 0 :(得分:5)

Posix需要fmemopen()功能,这完全符合您的要求。

Glibc certainly has it

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