相当于MSVC的open_memstream

时间:2010-05-19 09:13:33

标签: c visual-c++ posix

我在我的库中使用 open_memstream ,但我想将此库移植到MSVC。似乎没有可用的等效功能,但有足够类似的东西吗?

open_memstream 做的是它需要一个char **目的地和大小并返回你多次写入的FILE *,数据存储在一个动态分配的缓冲区中(可以从char **中访问)参数)。关闭FILE时,char **包含写入流的数据。这使得构建大型复杂字符串流变得简单。

虽然可以从memstream读取和搜索,但我只能写入它。

有没有办法在MSVC中打开类似的内存FILE流?此外,这是纯C,没有C ++。

2 个答案:

答案 0 :(得分:2)

Windows上的类似功能是CreateStreamOnHGlobal()。然而,这适用于IStream COM接口,它不是FILE的替代品。您可能想看看Cygwin源代码,看看他们做了什么。

答案 1 :(得分:1)

https://github.com/Snaipe/fmem 是 open_memstream 的不同平台/版本特定等价物的包装器

它依次尝试以下实现:

  • open_memstream。
  • fopencookie,具有不断增长的动态缓冲区。
  • funopen,具有不断增长的动态缓冲区。
  • WinAPI 临时内存支持文件。

当没有其他方法可用时,fmem 回退到 tmpfile()