功能fprintf
写入FILE*
。我有一个debugPrint函数写入stringstream。我不想改变我的功能因为它在许多地方使用它会破坏代码。
如何将字符串流传递给fprintf?
更新:我可以将stringstream
打包到FILE
并重新打开吗?
答案 0 :(得分:0)
你无法将ostream“传递”给fprintf。 FILE
结构取决于平台。
这可能不是最好的方法,但你可以创建一个邪恶的宏:
#undef fprintf
#define fprintf my_fprintf
你可以创建两个my_fprintfs,一个用FILE*
,另一个用std::stringstream&
作为参数。
您可以直接调用my_fprintf来避免使用宏,但您必须修改调用站点。
你不能移植“在FILE *中包装stringstream”,但有一些特定于系统的方法。如果这就是你所追求的,那么Linux就是fopencookie(),它带有读/写函数的函数指针。然后,您可以创建包装std :: stringstream的函数。