3

函数fprintf写入FILE*. 我有一个写入字符串流的 debugPrint 函数。我不想更改我的功能,因为它在很多地方都使用过,而且会破坏代码。

如何将字符串流传递给 fprintf?

更新:我可以包装stringstream到 aFILE并解开吗?

4

1 回答 1

1

您不能将 ostream“传递”给 fprintf。该FILE结构取决于平台。

这可能不是最好的方法,但是您可以创建一个邪恶的宏:

#undef fprintf
#define fprintf my_fprintf

您可以创建两个 my_fprintfs,一个接受FILE*,另一个接受std::stringstream&作为参数。

您可以通过简单地直接调用 my_fprintf 来避免宏,但您必须修改调用站点。

您不能可移植地“将字符串流包装在 FILE* 中”,但有一些系统特定的方法。如果这就是您所追求的,那么例如 Linux 就有 fopencookie() ,它采用函数指针来读取/写入函数。然后您可以创建包装 std::stringstream 的函数。

于 2013-04-18T08:57:44.790 回答