使fprintf写入std :: stringstream

时间:2013-04-18 08:47:44

标签: stringstream printf

功能fprintf写入FILE*。我有一个debugPrint函数写入stringstream。我不想改变我的功能因为它在许多地方使用它会破坏代码。

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

更新:我可以将stringstream打包到FILE并重新打开吗?

1 个答案:

答案 0 :(得分:0)

你无法将ostream“传递”给fprintf。 FILE结构取决于平台。

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

#undef fprintf
#define fprintf my_fprintf

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

您可以直接调用my_fprintf来避免使用宏,但您必须修改调用站点。

你不能移植“在FILE *中包装stringstream”,但有一些特定于系统的方法。如果这就是你所追求的,那么Linux就是fopencookie(),它带有读/写函数的函数指针。然后,您可以创建包装std :: stringstream的函数。