我可以读取open_memstream()生成的流吗?

时间:2015-06-04 11:17:45

标签: c++

我通过open_memstream()创建一个流,填充然后读取。它工作正常。但我很困惑,函数文档说:“open_memstream()函数打开一个用于写入缓冲区的流”。但我也可以读它。我是否以正确的方式使用它?也许我可以读取流因为我的平台中的功能实现允许这样做?当我改变平台时,我可能会收到错误。

2 个答案:

答案 0 :(得分:5)

  

但我也可以阅读。我是否以正确的方式使用它?

不,不是真的。 Posix指定open_memstream()仅用于输出。你只应该写信给它。您可以访问数据 你通过open_memstream()创建的缓冲区写入,但不是用fread(),fgets()或类似的。

如果您想要一个可以阅读的流,请使用fmemopen()。

  

也许我可以读取流,因为我的平台中的功能实现允许这样做?

是的,它可能是实现的一个功能,允许您从FILE *中读取,检查其文档。

答案 1 :(得分:0)

完成nos's answer